From 5610285ae9343707fb66daa4430a377a042cc3c2 Mon Sep 17 00:00:00 2001 From: Denys Smirnov Date: Sat, 6 Jan 2024 16:33:55 +0200 Subject: [PATCH] examples: Add the rest of the campaign scripts. --- examples/README.md | 5 + .../con01a/{con01a_test.go => dummy_test.go} | 0 examples/con02a/con02a.go | 2446 ++++++++++++++++ examples/con02a/dummy_test.go | 6 + examples/con03a/con03a.go | 519 ++++ examples/con03a/dummy_test.go | 6 + examples/con03b/con03b.go | 1574 +++++++++++ examples/con03b/dummy_test.go | 6 + examples/con04a/con04a.go | 230 ++ examples/con04a/dummy_test.go | 6 + examples/con04b/con04b.go | 768 +++++ examples/con04b/dummy_test.go | 6 + examples/con04c/con04c.go | 941 ++++++ examples/con04c/dummy_test.go | 6 + examples/con05a/con05a.go | 1991 +++++++++++++ examples/con05a/dummy_test.go | 6 + examples/con05b/con05b.go | 207 ++ examples/con05b/dummy_test.go | 6 + examples/con05c/con05c.go | 521 ++++ examples/con05c/dummy_test.go | 6 + examples/con06a/con06a.go | 601 ++++ examples/con06a/dummy_test.go | 6 + examples/con06b/con06b.go | 868 ++++++ examples/con06b/dummy_test.go | 6 + examples/con07a/con07a.go | 58 + examples/con07a/dummy_test.go | 6 + examples/con07b/con07b.go | 659 +++++ examples/con07b/dummy_test.go | 6 + examples/con07c/con07c.go | 253 ++ examples/con07c/dummy_test.go | 6 + examples/con07d/con07d.go | 224 ++ examples/con07d/dummy_test.go | 6 + examples/con07e/con07e.go | 157 + examples/con07e/dummy_test.go | 6 + examples/con07f/con07f.go | 245 ++ examples/con07f/dummy_test.go | 6 + examples/con07g/con07g.go | 22 + examples/con07g/dummy_test.go | 6 + examples/con07h/con07h.go | 657 +++++ examples/con07h/dummy_test.go | 6 + examples/con08a/con08a.go | 1643 +++++++++++ examples/con08a/dummy_test.go | 6 + examples/con08b/con08b.go | 263 ++ examples/con08b/dummy_test.go | 6 + examples/con08c/con08c.go | 838 ++++++ examples/con08c/dummy_test.go | 6 + examples/con08d/con08d.go | 2351 +++++++++++++++ examples/con08d/dummy_test.go | 6 + examples/con08e/con08e.go | 394 +++ examples/con08e/dummy_test.go | 6 + examples/con09a/con09a.go | 747 +++++ examples/con09a/dummy_test.go | 6 + examples/con09b/con09b.go | 805 ++++++ examples/con09b/dummy_test.go | 6 + examples/con09c/con09c.go | 583 ++++ examples/con09c/dummy_test.go | 6 + examples/con09d/con09d.go | 859 ++++++ examples/con09d/dummy_test.go | 6 + examples/con10a/con10a.go | 828 ++++++ examples/con10a/dummy_test.go | 6 + examples/con10b/con10b.go | 627 ++++ examples/con10b/dummy_test.go | 6 + examples/con10c/con10c.go | 682 +++++ examples/con10c/dummy_test.go | 6 + examples/con10d/con10d.go | 775 +++++ examples/con10d/dummy_test.go | 6 + examples/con11a/con11a.go | 519 ++++ examples/con11a/dummy_test.go | 6 + examples/war01a/dummy_test.go | 6 + examples/war01a/war01a.go | 1856 ++++++++++++ examples/war02a/dummy_test.go | 6 + examples/war02a/war02a.go | 2313 +++++++++++++++ examples/war02b/dummy_test.go | 6 + examples/war02b/war02b.go | 515 ++++ examples/war03a/dummy_test.go | 6 + examples/war03a/war03a.go | 437 +++ examples/war03b/dummy_test.go | 6 + examples/war03b/war03b.go | 1059 +++++++ examples/war03c/dummy_test.go | 6 + examples/war03c/war03c.go | 460 +++ examples/war04a/dummy_test.go | 6 + examples/war04a/war04a.go | 230 ++ examples/war04b/dummy_test.go | 6 + examples/war04b/war04b.go | 776 +++++ examples/war04c/dummy_test.go | 6 + examples/war04c/war04c.go | 923 ++++++ examples/war05a/dummy_test.go | 6 + examples/war05a/war05a.go | 2108 ++++++++++++++ examples/war05b/dummy_test.go | 6 + examples/war05b/war05b.go | 615 ++++ examples/war05c/dummy_test.go | 6 + examples/war05c/war05c.go | 543 ++++ examples/war06a/dummy_test.go | 6 + examples/war06a/war06a.go | 606 ++++ examples/war06b/dummy_test.go | 6 + examples/war06b/war06b.go | 874 ++++++ examples/war07a/dummy_test.go | 6 + examples/war07a/war07a.go | 2517 +++++++++++++++++ examples/war07b/dummy_test.go | 6 + examples/war07b/war07b.go | 191 ++ examples/war07c/dummy_test.go | 6 + examples/war07c/war07c.go | 100 + examples/war07d/dummy_test.go | 6 + examples/war07d/war07d.go | 61 + examples/war07e/dummy_test.go | 6 + examples/war07e/war07e.go | 110 + examples/war07f/dummy_test.go | 6 + examples/war07f/war07f.go | 25 + examples/war07g/dummy_test.go | 6 + examples/war07g/war07g.go | 538 ++++ examples/war07h/dummy_test.go | 6 + examples/war07h/war07h.go | 53 + examples/war08a/dummy_test.go | 6 + examples/war08a/war08a.go | 1494 ++++++++++ examples/war08b/dummy_test.go | 6 + examples/war08b/war08b.go | 263 ++ examples/war08c/dummy_test.go | 6 + examples/war08c/war08c.go | 842 ++++++ examples/war08d/dummy_test.go | 6 + examples/war08d/war08d.go | 2353 +++++++++++++++ examples/war08e/dummy_test.go | 6 + examples/war08e/war08e.go | 388 +++ examples/war09a/dummy_test.go | 6 + examples/war09a/war09a.go | 742 +++++ examples/war09b/dummy_test.go | 6 + examples/war09b/war09b.go | 808 ++++++ examples/war09c/dummy_test.go | 6 + examples/war09c/war09c.go | 565 ++++ examples/war09d/dummy_test.go | 6 + examples/war09d/war09d.go | 854 ++++++ examples/war10a/dummy_test.go | 6 + examples/war10a/war10a.go | 820 ++++++ examples/war10b/dummy_test.go | 6 + examples/war10b/war10b.go | 630 +++++ examples/war10c/dummy_test.go | 6 + examples/war10c/war10c.go | 684 +++++ examples/war10d/dummy_test.go | 6 + examples/war10d/war10d.go | 757 +++++ examples/war11a/dummy_test.go | 6 + examples/war11a/war11a.go | 1921 +++++++++++++ examples/wiz01a/dummy_test.go | 6 + examples/wiz01a/wiz01a.go | 815 ++++++ examples/wiz02a/dummy_test.go | 6 + examples/wiz02a/wiz02a.go | 1058 +++++++ examples/wiz02b/dummy_test.go | 6 + examples/wiz02b/wiz02b.go | 1458 ++++++++++ examples/wiz02c/dummy_test.go | 6 + examples/wiz02c/wiz02c.go | 668 +++++ examples/wiz03a/dummy_test.go | 6 + examples/wiz03a/wiz03a.go | 480 ++++ examples/wiz03b/dummy_test.go | 6 + examples/wiz03b/wiz03b.go | 382 +++ examples/wiz03c/dummy_test.go | 6 + examples/wiz03c/wiz03c.go | 117 + examples/wiz04a/dummy_test.go | 6 + examples/wiz04a/wiz04a.go | 224 ++ examples/wiz04b/dummy_test.go | 6 + examples/wiz04b/wiz04b.go | 740 +++++ examples/wiz04c/dummy_test.go | 6 + examples/wiz04c/wiz04c.go | 923 ++++++ examples/wiz05a/dummy_test.go | 6 + examples/wiz05a/wiz05a.go | 1712 +++++++++++ examples/wiz05b/dummy_test.go | 6 + examples/wiz05b/wiz05b.go | 434 +++ examples/wiz05c/dummy_test.go | 6 + examples/wiz05c/wiz05c.go | 530 ++++ examples/wiz06a/dummy_test.go | 6 + examples/wiz06a/wiz06a.go | 556 ++++ examples/wiz06b/dummy_test.go | 6 + examples/wiz06b/wiz06b.go | 144 + examples/wiz06c/dummy_test.go | 6 + examples/wiz06c/wiz06c.go | 462 +++ examples/wiz07a/dummy_test.go | 6 + examples/wiz07a/wiz07a.go | 55 + examples/wiz07b/dummy_test.go | 6 + examples/wiz07b/wiz07b.go | 275 ++ examples/wiz07c/dummy_test.go | 6 + examples/wiz07c/wiz07c.go | 819 ++++++ examples/wiz07d/dummy_test.go | 6 + examples/wiz07d/wiz07d.go | 119 + examples/wiz07e/dummy_test.go | 6 + examples/wiz07e/wiz07e.go | 390 +++ examples/wiz07f/dummy_test.go | 6 + examples/wiz07f/wiz07f.go | 474 ++++ examples/wiz08a/dummy_test.go | 6 + examples/wiz08a/wiz08a.go | 1524 ++++++++++ examples/wiz08b/dummy_test.go | 6 + examples/wiz08b/wiz08b.go | 263 ++ examples/wiz08c/dummy_test.go | 6 + examples/wiz08c/wiz08c.go | 842 ++++++ examples/wiz08d/dummy_test.go | 6 + examples/wiz08d/wiz08d.go | 2353 +++++++++++++++ examples/wiz08e/dummy_test.go | 6 + examples/wiz08e/wiz08e.go | 388 +++ examples/wiz09a/dummy_test.go | 6 + examples/wiz09a/wiz09a.go | 745 +++++ examples/wiz09b/dummy_test.go | 6 + examples/wiz09b/wiz09b.go | 803 ++++++ examples/wiz09c/dummy_test.go | 6 + examples/wiz09c/wiz09c.go | 567 ++++ examples/wiz09d/dummy_test.go | 6 + examples/wiz09d/wiz09d.go | 854 ++++++ examples/wiz10a/dummy_test.go | 6 + examples/wiz10a/wiz10a.go | 824 ++++++ examples/wiz10b/dummy_test.go | 6 + examples/wiz10b/wiz10b.go | 630 +++++ examples/wiz10c/dummy_test.go | 6 + examples/wiz10c/wiz10c.go | 693 +++++ examples/wiz10d/dummy_test.go | 6 + examples/wiz10d/wiz10d.go | 747 +++++ examples/wiz11a/dummy_test.go | 6 + examples/wiz11a/wiz11a.go | 734 +++++ 212 files changed, 80323 insertions(+) create mode 100644 examples/README.md rename examples/con01a/{con01a_test.go => dummy_test.go} (100%) create mode 100644 examples/con02a/con02a.go create mode 100644 examples/con02a/dummy_test.go create mode 100644 examples/con03a/con03a.go create mode 100644 examples/con03a/dummy_test.go create mode 100644 examples/con03b/con03b.go create mode 100644 examples/con03b/dummy_test.go create mode 100644 examples/con04a/con04a.go create mode 100644 examples/con04a/dummy_test.go create mode 100644 examples/con04b/con04b.go create mode 100644 examples/con04b/dummy_test.go create mode 100644 examples/con04c/con04c.go create mode 100644 examples/con04c/dummy_test.go create mode 100644 examples/con05a/con05a.go create mode 100644 examples/con05a/dummy_test.go create mode 100644 examples/con05b/con05b.go create mode 100644 examples/con05b/dummy_test.go create mode 100644 examples/con05c/con05c.go create mode 100644 examples/con05c/dummy_test.go create mode 100644 examples/con06a/con06a.go create mode 100644 examples/con06a/dummy_test.go create mode 100644 examples/con06b/con06b.go create mode 100644 examples/con06b/dummy_test.go create mode 100644 examples/con07a/con07a.go create mode 100644 examples/con07a/dummy_test.go create mode 100644 examples/con07b/con07b.go create mode 100644 examples/con07b/dummy_test.go create mode 100644 examples/con07c/con07c.go create mode 100644 examples/con07c/dummy_test.go create mode 100644 examples/con07d/con07d.go create mode 100644 examples/con07d/dummy_test.go create mode 100644 examples/con07e/con07e.go create mode 100644 examples/con07e/dummy_test.go create mode 100644 examples/con07f/con07f.go create mode 100644 examples/con07f/dummy_test.go create mode 100644 examples/con07g/con07g.go create mode 100644 examples/con07g/dummy_test.go create mode 100644 examples/con07h/con07h.go create mode 100644 examples/con07h/dummy_test.go create mode 100644 examples/con08a/con08a.go create mode 100644 examples/con08a/dummy_test.go create mode 100644 examples/con08b/con08b.go create mode 100644 examples/con08b/dummy_test.go create mode 100644 examples/con08c/con08c.go create mode 100644 examples/con08c/dummy_test.go create mode 100644 examples/con08d/con08d.go create mode 100644 examples/con08d/dummy_test.go create mode 100644 examples/con08e/con08e.go create mode 100644 examples/con08e/dummy_test.go create mode 100644 examples/con09a/con09a.go create mode 100644 examples/con09a/dummy_test.go create mode 100644 examples/con09b/con09b.go create mode 100644 examples/con09b/dummy_test.go create mode 100644 examples/con09c/con09c.go create mode 100644 examples/con09c/dummy_test.go create mode 100644 examples/con09d/con09d.go create mode 100644 examples/con09d/dummy_test.go create mode 100644 examples/con10a/con10a.go create mode 100644 examples/con10a/dummy_test.go create mode 100644 examples/con10b/con10b.go create mode 100644 examples/con10b/dummy_test.go create mode 100644 examples/con10c/con10c.go create mode 100644 examples/con10c/dummy_test.go create mode 100644 examples/con10d/con10d.go create mode 100644 examples/con10d/dummy_test.go create mode 100644 examples/con11a/con11a.go create mode 100644 examples/con11a/dummy_test.go create mode 100644 examples/war01a/dummy_test.go create mode 100644 examples/war01a/war01a.go create mode 100644 examples/war02a/dummy_test.go create mode 100644 examples/war02a/war02a.go create mode 100644 examples/war02b/dummy_test.go create mode 100644 examples/war02b/war02b.go create mode 100644 examples/war03a/dummy_test.go create mode 100644 examples/war03a/war03a.go create mode 100644 examples/war03b/dummy_test.go create mode 100644 examples/war03b/war03b.go create mode 100644 examples/war03c/dummy_test.go create mode 100644 examples/war03c/war03c.go create mode 100644 examples/war04a/dummy_test.go create mode 100644 examples/war04a/war04a.go create mode 100644 examples/war04b/dummy_test.go create mode 100644 examples/war04b/war04b.go create mode 100644 examples/war04c/dummy_test.go create mode 100644 examples/war04c/war04c.go create mode 100644 examples/war05a/dummy_test.go create mode 100644 examples/war05a/war05a.go create mode 100644 examples/war05b/dummy_test.go create mode 100644 examples/war05b/war05b.go create mode 100644 examples/war05c/dummy_test.go create mode 100644 examples/war05c/war05c.go create mode 100644 examples/war06a/dummy_test.go create mode 100644 examples/war06a/war06a.go create mode 100644 examples/war06b/dummy_test.go create mode 100644 examples/war06b/war06b.go create mode 100644 examples/war07a/dummy_test.go create mode 100644 examples/war07a/war07a.go create mode 100644 examples/war07b/dummy_test.go create mode 100644 examples/war07b/war07b.go create mode 100644 examples/war07c/dummy_test.go create mode 100644 examples/war07c/war07c.go create mode 100644 examples/war07d/dummy_test.go create mode 100644 examples/war07d/war07d.go create mode 100644 examples/war07e/dummy_test.go create mode 100644 examples/war07e/war07e.go create mode 100644 examples/war07f/dummy_test.go create mode 100644 examples/war07f/war07f.go create mode 100644 examples/war07g/dummy_test.go create mode 100644 examples/war07g/war07g.go create mode 100644 examples/war07h/dummy_test.go create mode 100644 examples/war07h/war07h.go create mode 100644 examples/war08a/dummy_test.go create mode 100644 examples/war08a/war08a.go create mode 100644 examples/war08b/dummy_test.go create mode 100644 examples/war08b/war08b.go create mode 100644 examples/war08c/dummy_test.go create mode 100644 examples/war08c/war08c.go create mode 100644 examples/war08d/dummy_test.go create mode 100644 examples/war08d/war08d.go create mode 100644 examples/war08e/dummy_test.go create mode 100644 examples/war08e/war08e.go create mode 100644 examples/war09a/dummy_test.go create mode 100644 examples/war09a/war09a.go create mode 100644 examples/war09b/dummy_test.go create mode 100644 examples/war09b/war09b.go create mode 100644 examples/war09c/dummy_test.go create mode 100644 examples/war09c/war09c.go create mode 100644 examples/war09d/dummy_test.go create mode 100644 examples/war09d/war09d.go create mode 100644 examples/war10a/dummy_test.go create mode 100644 examples/war10a/war10a.go create mode 100644 examples/war10b/dummy_test.go create mode 100644 examples/war10b/war10b.go create mode 100644 examples/war10c/dummy_test.go create mode 100644 examples/war10c/war10c.go create mode 100644 examples/war10d/dummy_test.go create mode 100644 examples/war10d/war10d.go create mode 100644 examples/war11a/dummy_test.go create mode 100644 examples/war11a/war11a.go create mode 100644 examples/wiz01a/dummy_test.go create mode 100644 examples/wiz01a/wiz01a.go create mode 100644 examples/wiz02a/dummy_test.go create mode 100644 examples/wiz02a/wiz02a.go create mode 100644 examples/wiz02b/dummy_test.go create mode 100644 examples/wiz02b/wiz02b.go create mode 100644 examples/wiz02c/dummy_test.go create mode 100644 examples/wiz02c/wiz02c.go create mode 100644 examples/wiz03a/dummy_test.go create mode 100644 examples/wiz03a/wiz03a.go create mode 100644 examples/wiz03b/dummy_test.go create mode 100644 examples/wiz03b/wiz03b.go create mode 100644 examples/wiz03c/dummy_test.go create mode 100644 examples/wiz03c/wiz03c.go create mode 100644 examples/wiz04a/dummy_test.go create mode 100644 examples/wiz04a/wiz04a.go create mode 100644 examples/wiz04b/dummy_test.go create mode 100644 examples/wiz04b/wiz04b.go create mode 100644 examples/wiz04c/dummy_test.go create mode 100644 examples/wiz04c/wiz04c.go create mode 100644 examples/wiz05a/dummy_test.go create mode 100644 examples/wiz05a/wiz05a.go create mode 100644 examples/wiz05b/dummy_test.go create mode 100644 examples/wiz05b/wiz05b.go create mode 100644 examples/wiz05c/dummy_test.go create mode 100644 examples/wiz05c/wiz05c.go create mode 100644 examples/wiz06a/dummy_test.go create mode 100644 examples/wiz06a/wiz06a.go create mode 100644 examples/wiz06b/dummy_test.go create mode 100644 examples/wiz06b/wiz06b.go create mode 100644 examples/wiz06c/dummy_test.go create mode 100644 examples/wiz06c/wiz06c.go create mode 100644 examples/wiz07a/dummy_test.go create mode 100644 examples/wiz07a/wiz07a.go create mode 100644 examples/wiz07b/dummy_test.go create mode 100644 examples/wiz07b/wiz07b.go create mode 100644 examples/wiz07c/dummy_test.go create mode 100644 examples/wiz07c/wiz07c.go create mode 100644 examples/wiz07d/dummy_test.go create mode 100644 examples/wiz07d/wiz07d.go create mode 100644 examples/wiz07e/dummy_test.go create mode 100644 examples/wiz07e/wiz07e.go create mode 100644 examples/wiz07f/dummy_test.go create mode 100644 examples/wiz07f/wiz07f.go create mode 100644 examples/wiz08a/dummy_test.go create mode 100644 examples/wiz08a/wiz08a.go create mode 100644 examples/wiz08b/dummy_test.go create mode 100644 examples/wiz08b/wiz08b.go create mode 100644 examples/wiz08c/dummy_test.go create mode 100644 examples/wiz08c/wiz08c.go create mode 100644 examples/wiz08d/dummy_test.go create mode 100644 examples/wiz08d/wiz08d.go create mode 100644 examples/wiz08e/dummy_test.go create mode 100644 examples/wiz08e/wiz08e.go create mode 100644 examples/wiz09a/dummy_test.go create mode 100644 examples/wiz09a/wiz09a.go create mode 100644 examples/wiz09b/dummy_test.go create mode 100644 examples/wiz09b/wiz09b.go create mode 100644 examples/wiz09c/dummy_test.go create mode 100644 examples/wiz09c/wiz09c.go create mode 100644 examples/wiz09d/dummy_test.go create mode 100644 examples/wiz09d/wiz09d.go create mode 100644 examples/wiz10a/dummy_test.go create mode 100644 examples/wiz10a/wiz10a.go create mode 100644 examples/wiz10b/dummy_test.go create mode 100644 examples/wiz10b/wiz10b.go create mode 100644 examples/wiz10c/dummy_test.go create mode 100644 examples/wiz10c/wiz10c.go create mode 100644 examples/wiz10d/dummy_test.go create mode 100644 examples/wiz10d/wiz10d.go create mode 100644 examples/wiz11a/dummy_test.go create mode 100644 examples/wiz11a/wiz11a.go diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..94728b8 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,5 @@ +# Script examples + +## Campaign + +- [con01a](./con01a) \ No newline at end of file diff --git a/examples/con01a/con01a_test.go b/examples/con01a/dummy_test.go similarity index 100% rename from examples/con01a/con01a_test.go rename to examples/con01a/dummy_test.go diff --git a/examples/con02a/con02a.go b/examples/con02a/con02a.go new file mode 100644 index 0000000..be850b5 --- /dev/null +++ b/examples/con02a/con02a.go @@ -0,0 +1,2446 @@ +package con02a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + flag4 bool + obj5 ns.ObjectID + ivar6 int + ivar7 int + ivar8 int + ivar9 int + ivar10 int + obj11 ns.ObjectID + obj12 ns.ObjectID + wp13 ns.WaypointID + wp14 ns.WaypointID + wp15 ns.WaypointID + wp16 ns.WaypointID + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + gvar30 int + gvar31 int + gvar32 int + gvar33 int + gvar34 int + gvar35 int + gvar36 int + gvar37 int + gvar38 int + gvar39 int + gvar40 int + gvar41 int + gvar42 int + gvar43 int + gvar44 int + flag45 bool + flag46 bool + flag47 bool + flag48 bool + flag49 bool + gvar50 int + gvar51 int + gvar52 int + gvar53 int + gvar54 int + gvar55 int + gvar56 int + gvar57 int + ivar58 int + ivar59 int + ivar60 int + ivar61 int + obj62 ns.ObjectID + flag63 bool + flag64 bool + flag65 bool + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + obj80 ns.ObjectID + obj81 ns.ObjectID + obj82 ns.ObjectID + obj83 ns.ObjectID + obj84 ns.ObjectID + obj85 ns.ObjectID + obj86 ns.ObjectID + obj87 ns.ObjectID + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + gvar103 ns.ObjectGroupID + wp104 ns.WaypointID + wp105 ns.WaypointID + wp106 ns.WaypointID + wp107 ns.WaypointID + wp108 ns.WaypointID + wp109 ns.WaypointID + wp110 ns.WaypointID + wp111 ns.WaypointID + wp112 ns.WaypointID + wp113 ns.WaypointID + gvar114 ns.WaypointGroupID + gvar115 ns.WaypointGroupID + gvar116 ns.WaypointGroupID + flag117 bool + flag118 bool + obj119 ns.ObjectID + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + obj123 ns.ObjectID + obj124 ns.ObjectID + obj125 ns.ObjectID + obj126 ns.ObjectID + obj127 ns.ObjectID + obj128 ns.ObjectID + obj129 ns.ObjectID + obj130 ns.ObjectID + obj131 ns.ObjectID + obj132 ns.ObjectID + obj133 ns.ObjectID + gvar134 ns.ObjectGroupID + gvar135 ns.ObjectGroupID + wp136 ns.WaypointID + wp137 ns.WaypointID + wp138 ns.WaypointID + wp139 ns.WaypointID + wp140 ns.WaypointID + wp141 ns.WaypointID + wp142 ns.WaypointID + wp143 ns.WaypointID + wp144 ns.WaypointID + ivar145 int + flag146 bool + flag147 bool + flag148 bool + flag149 bool + gvar150 int + gvar151 int + gvar152 int + gvar153 int + gvar154 int + fvar155 float32 + fvar156 float32 + obj157 ns.ObjectID + flag158 bool + flag159 bool + ivar160 int + wp161 ns.WaypointID + wp162 ns.WaypointID + wp163 ns.WaypointID + wp164 ns.WaypointID + obj165 ns.ObjectID + gvar166 ns.ObjectGroupID + gvar167 ns.ObjectGroupID + gvar168 ns.WallGroupID + obj169 ns.ObjectID + gvar170 int + obj171 ns.ObjectID + gvar172 int + obj173 ns.ObjectID + obj174 ns.ObjectID + obj175 ns.ObjectID + obj176 ns.ObjectID + obj177 ns.ObjectID + obj178 ns.ObjectID + obj179 ns.ObjectID + obj180 [2]ns.ObjectID + gvar181 ns.ObjectGroupID + gvar182 ns.ObjectGroupID + gvar183 ns.ObjectGroupID + gvar184 ns.ObjectGroupID + wp185 ns.WaypointID + wp186 ns.WaypointID + wp187 ns.WaypointID + wp188 ns.WaypointID + wp189 ns.WaypointID + wp190 ns.WaypointID + wp191 ns.WaypointID + wp192 ns.WaypointID + wp193 ns.WaypointID + wp194 ns.WaypointID + wp195 ns.WaypointID + wp196 ns.WaypointID + wp197 ns.WaypointID + wp198 ns.WaypointID + wp199 ns.WaypointID + wp200 [2]ns.WaypointID + obj201 ns.ObjectID + gvar202 int + gvar203 int + gvar204 int + gvar205 int + gvar206 int + gvar207 int + gvar208 int + gvar209 int + gvar210 int + gvar211 int + gvar212 int + gvar213 int + obj214 ns.ObjectID + obj215 ns.ObjectID + obj216 ns.ObjectID + obj217 ns.ObjectID + gvar218 ns.ObjectGroupID + wp219 ns.WaypointID + flag220 bool + ivar221 int +) + +func init() { + flag4 = true + ivar6 = 1 + ivar7 = 0 + ivar8 = 0 + ivar9 = 85 + ivar10 = 2 + gvar17 = 0 + gvar18 = 1 + gvar19 = 2 + gvar20 = 3 + gvar21 = 4 + gvar22 = 5 + gvar23 = 6 + gvar24 = 7 + gvar25 = 8 + gvar26 = 9 + gvar27 = 10 + gvar28 = 11 + gvar29 = 12 + gvar30 = 13 + gvar31 = 14 + gvar32 = 15 + gvar33 = 16 + gvar34 = 17 + gvar35 = 18 + gvar36 = 19 + gvar37 = 20 + gvar38 = 21 + gvar39 = 22 + gvar40 = 23 + gvar41 = 24 + gvar42 = 25 + gvar43 = 26 + gvar44 = 27 + flag45 = false + flag46 = false + flag47 = false + flag48 = true + flag49 = true + gvar50 = gvar25 + gvar51 = gvar22 + gvar52 = gvar17 + gvar53 = gvar28 + gvar54 = gvar32 + gvar55 = gvar36 + gvar56 = gvar40 + gvar57 = gvar42 + ivar58 = 20 + ivar59 = 30 + ivar60 = 100 + ivar61 = 0 + flag63 = false + flag64 = false + flag65 = false + ivar145 = 0 + flag146 = false + flag147 = false + flag148 = false + flag149 = false + gvar150 = 0 + gvar151 = 1 + gvar152 = gvar150 + gvar153 = 0 + gvar154 = 1 + fvar155 = 1650 + fvar156 = 3055 + flag117 = false + flag158 = false + flag159 = true + ivar160 = 30 + flag118 = false + gvar202 = 0 + gvar203 = 1 + gvar204 = 2 + gvar205 = 3 + gvar206 = 4 + gvar207 = 5 + gvar208 = gvar202 + gvar209 = gvar202 + gvar210 = gvar202 + gvar211 = gvar202 + gvar212 = gvar202 + gvar213 = gvar202 + flag220 = false + ivar221 = 0 +} +func ContestWon(a1 int) { + ns.LookAtObject(obj11, ns.GetHost()) + flag64 = true + gvar54 = gvar34 + ns.StartDialog(obj11, ns.GetHost()) + ns.UnlockDoor(obj77) + ns.UnlockDoor(obj78) +} +func ContestLost(a1 int) { + var v0 int + ns.DestroyEveryChat() + ivar61 += 1 + ns.LookAtObject(obj11, ns.GetHost()) + if ivar61 != 1 { + goto LABEL1 + } + gvar54 = gvar32 +LABEL1: + if !(ivar61 > 1) { + goto LABEL2 + } + ns.SetDialog(obj11, ns.NORMAL, ContestOfficialDialogStart, ContestOfficialDialogEnd) + ns.SetShopkeeperText(obj67, "Con02:BarkeeperDefault") + gvar54 = gvar35 +LABEL2: + v0 = a1 + if v0 == 8 { + goto LABEL3 + } + if v0 == 7 { + goto LABEL4 + } + if v0 == 6 { + goto LABEL5 + } + if v0 == 5 { + goto LABEL6 + } + if v0 == 4 { + goto LABEL7 + } + if v0 == 3 { + goto LABEL8 + } + if v0 == 2 { + goto LABEL9 + } + if v0 == 1 { + goto LABEL10 + } + if v0 == 0 { + goto LABEL11 + } + goto LABEL12 +LABEL3: + ns.Chat(obj102, "Con02a:Contest8of10") + goto LABEL12 +LABEL4: + ns.Chat(obj102, "Con02a:Contest7of10") + goto LABEL12 +LABEL5: + ns.Chat(obj102, "Con02a:Contest6of10") + goto LABEL12 +LABEL6: + ns.Chat(obj102, "Con02a:Contest5of10") + goto LABEL12 +LABEL7: + ns.Chat(obj102, "Con02a:Contest4of10") + goto LABEL12 +LABEL8: + ns.Chat(obj102, "Con02a:Contest3of10") + goto LABEL12 +LABEL9: + ns.Chat(obj102, "Con02a:Contest2of10") + goto LABEL12 +LABEL10: + ns.Chat(obj102, "Con02a:Contest1of10") + goto LABEL12 +LABEL11: + ns.Chat(obj102, "Con02a:Contest0of10") + goto LABEL12 +LABEL12: + ns.UnlockDoor(obj77) + ns.UnlockDoor(obj78) +} +func WinContest() { + gvar210 = gvar207 +} +func ContestEngine() { + var ( + v0 int + v1 int + v2 float32 + v3 float32 + v4 int + ) + v1 = ns.CurrentHealth(obj5) + if flag4 { + goto LABEL1 + } + v0 = ns.Random(0, 2) + for { + if v0 != ivar6 { + goto LABEL2 + } + v0 = ns.Random(0, 2) + } +LABEL2: + ivar6 = v0 + if !(v1 > 0) { + goto LABEL4 + } + ns.Delete(obj5) + ivar8 += 1 + goto LABEL5 +LABEL4: + ivar7 += 1 + ivar9 = ivar9 - ivar10 +LABEL5: + goto LABEL6 +LABEL1: + v0 = 1 + flag4 = false +LABEL6: + if !(ivar8+ivar7 < 10) { + goto LABEL7 + } + v4 = v0 + if v4 == 0 { + goto LABEL8 + } + if v4 == 1 { + goto LABEL9 + } + if v4 == 2 { + goto LABEL10 + } + goto LABEL11 +LABEL8: + v2 = ns.GetWaypointX(wp13) + v3 = ns.GetWaypointY(wp13) + ns.Effect(ns.SMOKE_BLAST, v2, v3, 0, 0) + obj5 = ns.CreateObject("TargetBarrel1", wp13) + ns.AudioEvent(ns.BlinkCast, wp16) + goto LABEL11 +LABEL9: + v2 = ns.GetWaypointX(wp14) + v3 = ns.GetWaypointY(wp14) + ns.Effect(ns.SMOKE_BLAST, v2, v3, 0, 0) + obj5 = ns.CreateObject("TargetBarrel1", wp14) + ns.AudioEvent(ns.BlinkCast, wp16) + goto LABEL11 +LABEL10: + v2 = ns.GetWaypointX(wp15) + v3 = ns.GetWaypointY(wp15) + ns.Effect(ns.SMOKE_BLAST, v2, v3, 0, 0) + obj5 = ns.CreateObject("TargetBarrel1", wp15) + ns.AudioEvent(ns.BlinkCast, wp16) + goto LABEL11 +LABEL11: + ns.LookAtObject(obj11, obj5) + ns.FrameTimer(ivar9, ContestEngine) + goto LABEL12 +LABEL7: + if !(ivar7 >= 9 && ivar8 <= 1) { + goto LABEL13 + } + ContestWon(ivar7) + WinContest() + ivar7 = 0 + ivar8 = 0 + ivar6 = 1 + ivar9 = 60 + flag4 = true + goto LABEL12 +LABEL13: + ContestLost(ivar7) + ivar7 = 0 + ivar8 = 0 + ivar6 = 1 + ivar9 = 85 + flag4 = true +LABEL12: + return +} +func OfficialSEG4() { + ns.LookAtObject(obj11, ns.GetHost()) + ns.Chat(obj11, "Con02a:OfficialSEG4") + ContestEngine() +} +func OfficialSEG3() { + ns.LookAtObject(obj11, ns.GetHost()) + ns.Chat(obj11, "Con02a:OfficialSEG3") + ns.FrameTimer(30, OfficialSEG4) +} +func OfficialSEG2() { + ns.LookAtObject(obj11, ns.GetHost()) + ns.ObjectOff(obj12) + ns.Chat(obj11, "Con02a:OfficialSEG2") + ns.FrameTimer(30, OfficialSEG3) +} +func GatekeeperDialogStart() { + var v0 int + ns.LookAtObject(obj68, ns.GetHost()) + v0 = gvar56 + if v0 == gvar40 { + goto LABEL1 + } + if v0 == gvar41 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con02a:GatekeeperWaiting") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con02a:GatekeeperGuarding") + goto LABEL3 +LABEL3: + return +} +func GatekeeperDialogEnd() { +} +func BarkeeperDialogStart() { + var v0 int + ns.LookAtObject(obj67, ns.GetHost()) + v0 = gvar55 + if v0 == gvar36 { + goto LABEL1 + } + if v0 == gvar37 { + goto LABEL2 + } + if v0 == gvar38 { + goto LABEL3 + } + if v0 == gvar39 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con02a:BarkeeperGreet") + goto LABEL5 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con02a:BarkeeperQuest") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "Con02a:BarkeeperAfterQuest") + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "Con02a:RandomSay") + goto LABEL5 +LABEL5: + return +} +func BarkeeperDialogEnd() { + if gvar55 != gvar38 { + goto LABEL1 + } + gvar55 = gvar39 +LABEL1: + return +} +func ContestGuardDialogStart() { + var v0 int + v0 = gvar51 + if v0 == gvar22 { + goto LABEL1 + } + if v0 == gvar23 { + goto LABEL2 + } + if v0 == gvar24 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj69, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:ContestGuard") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj69, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:EnterContest") + flag63 = true + ns.UnlockDoor(obj77) + ns.UnlockDoor(obj78) + goto LABEL4 +LABEL3: + ns.LookAtObject(obj69, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:RandomSay") + goto LABEL4 +LABEL4: + return +} +func ContestGuardDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 bool + v6 ns.ObjectID + v7 int + v8 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v5 = false + v6 = ns.GetLastItem(ns.GetHost()) + for { + if v6 == 0 { + goto LABEL1 + } + if !(ns.HasClass(v6, ns.WEAPON) && ns.HasSubclass(v6, "BOW")) { + goto LABEL2 + } + v5 = true + goto LABEL1 + LABEL2: + v6 = ns.GetPreviousItem(v6) + } +LABEL1: + v8 = gvar51 + if v8 == gvar22 { + goto LABEL4 + } + if v8 == gvar23 { + goto LABEL5 + } + if v8 == gvar24 { + goto LABEL6 + } + goto LABEL7 +LABEL4: + v1 = ns.GetAnswer(obj69) + v7 = v1 + if v7 == v2 { + goto LABEL8 + } + if v7 == v3 { + goto LABEL9 + } + if v7 == v4 { + goto LABEL10 + } + goto LABEL11 +LABEL8: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar58) { + goto LABEL12 + } + ns.SetDialog(obj69, ns.NORMAL, NullDialogStart, ResetContestGuardDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "Con02a:NotEnoughGold") + goto LABEL13 +LABEL12: + if v5 { + goto LABEL14 + } + ns.SetDialog(obj69, ns.NORMAL, NullDialogStart, ResetContestGuardDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "Con02a:NoBow") + goto LABEL13 +LABEL14: + ns.ChangeGold(ns.GetHost(), -ivar58) + gvar51 = gvar23 + ns.SetDialog(obj69, ns.NORMAL, ContestGuardDialogStart, ContestGuardDialogEnd) + ContestGuardDialogStart() +LABEL13: + goto LABEL11 +LABEL9: + goto LABEL11 +LABEL10: + goto LABEL11 +LABEL11: + goto LABEL7 +LABEL5: + ns.CancelDialog(obj69) + goto LABEL7 +LABEL6: + goto LABEL7 +LABEL7: + return +} +func MayorsGuardDialogStart() { + var v0 int + v0 = gvar50 + if v0 == gvar25 { + goto LABEL1 + } + if v0 == gvar26 { + goto LABEL2 + } + if v0 == gvar27 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj70, ns.GetHost()) + gvar55 = gvar37 + ns.TellStory(ns.SwordsmanHurt, "Con02a:MayorsGuard") + goto LABEL4 +LABEL2: + ns.DestroyEveryChat() + ns.LookAtObject(obj70, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:MeetTheMayor") + if !ns.IsLocked(obj75) { + goto LABEL5 + } + ns.UnlockDoor(obj75) + ns.UnlockDoor(obj76) +LABEL5: + goto LABEL4 +LABEL3: + ns.LookAtObject(obj70, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorsGuardIntro") +LABEL4: + return +} +func MayorsGuardDialogEnd() { +} +func MayorDialogStart() { + var v0 int + ns.DestroyEveryChat() + v0 = gvar53 + if v0 == gvar28 { + goto LABEL1 + } + if v0 == gvar29 { + goto LABEL2 + } + if v0 == gvar30 { + goto LABEL3 + } + if v0 == gvar31 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.LookAtObject(obj72, ns.GetHost()) + ns.DestroyEveryChat() + ns.TellStory(ns.SwordsmanHurt, "Con02a:MayorGreeting") + goto LABEL5 +LABEL2: + ns.LookAtObject(obj72, ns.GetHost()) + if flag117 { + goto LABEL6 + } + ns.TellStory(ns.SwordsmanHurt, "Con02a:MayorProd") + goto LABEL7 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "Con02a:MayorFree") +LABEL7: + goto LABEL5 +LABEL3: + ns.Frozen(obj72, true) + ns.LookAtObject(obj72, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:MayorsReward") + ns.SetShopkeeperText(obj67, "Con02a:BarkeeperAfterQuest") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj72, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:MayorsGuardIdle") + goto LABEL5 +LABEL5: + return +} +func MayorDialogEnd() { + var v0 int + v0 = gvar53 + if v0 == gvar28 { + goto LABEL1 + } + if v0 == gvar29 { + goto LABEL2 + } + if v0 == gvar30 { + goto LABEL3 + } + if v0 == gvar31 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar53 = gvar29 + goto LABEL5 +LABEL2: + if !flag117 { + goto LABEL6 + } + ns.WayPointGroupOff(gvar116) + ns.WayPointGroupOn(gvar115) + ns.UnlockDoor(obj88) + ns.CreatureGuard(obj72, ns.GetWaypointX(wp110), ns.GetWaypointY(wp110), ns.GetWaypointX(ns.Waypoint("MayorRewardLookWP")), ns.GetWaypointY(ns.Waypoint("MayorRewardLookWP")), 150) + gvar53 = gvar30 + ns.CancelDialog(obj66) + ns.FrameTimer(15, AwardMayorExperience) +LABEL6: + goto LABEL5 +LABEL3: + ns.Frozen(obj72, false) + ns.JournalEdit(ns.GetHost(), "BanishSpiders", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.CancelDialog(obj68) + gvar55 = gvar38 + SaveMayor() + HelpMayor() + ns.CancelDialog(obj72) + gvar50 = gvar27 + ns.Pickup(ns.GetHost(), obj89) + ns.Move(obj72, wp111) + ns.ObjectGroupOn(gvar103) + if !flag118 { + goto LABEL7 + } + ns.PrintToAll("Gate triggers are enabled.") +LABEL7: + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func AldwinDialogStart() { + var v0 int + v0 = gvar52 + if v0 == gvar17 { + goto LABEL1 + } + if v0 == gvar18 { + goto LABEL2 + } + if v0 == gvar19 { + goto LABEL3 + } + if v0 == gvar20 { + goto LABEL4 + } + if v0 == gvar21 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.LookAtObject(obj71, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:AldwinGreeting") + goto LABEL6 +LABEL2: + ns.LookAtObject(obj71, ns.GetHost()) + gvar52 = gvar19 + ns.TellStory(ns.SwordsmanHurt, "Con02a:BecomeConjurer2") + goto LABEL6 +LABEL3: + ns.LookAtObject(obj71, ns.GetHost()) + gvar52 = gvar20 + ns.TellStory(ns.SwordsmanHurt, "Con02a:BecomeConjurer3") + goto LABEL6 +LABEL4: + ns.LookAtObject(obj71, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:AldwinProd") + goto LABEL6 +LABEL5: + ns.LookAtObject(obj71, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:AldwinImp") + goto LABEL6 +LABEL6: + return +} +func AldwinDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + v6 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v6 = gvar52 + if v6 == gvar17 { + goto LABEL1 + } + if v6 == gvar18 { + goto LABEL2 + } + if v6 == gvar19 { + goto LABEL3 + } + if v6 == gvar20 { + goto LABEL4 + } + if v6 == gvar21 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v1 = ns.GetAnswer(obj71) + v5 = v1 + if v5 == v2 { + goto LABEL7 + } + if v5 == v3 { + goto LABEL8 + } + if v5 == v4 { + goto LABEL9 + } + goto LABEL10 +LABEL7: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar59) { + goto LABEL11 + } + ns.SetDialog(obj71, ns.NORMAL, NullDialogStart, ResetAldwinDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "Con02a:AldwinPoor") + goto LABEL12 +LABEL11: + if !flag48 { + goto LABEL13 + } + flag48 = false + ns.JournalEdit(ns.GetHost(), "LocateAldwyn", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") +LABEL13: + ns.ChangeGold(ns.GetHost(), -ivar59) + ns.SetDialog(obj71, ns.NEXT, AldwinDialogStart, AldwinDialogEnd) + gvar52 = gvar18 + flag45 = true + gvar50 = gvar26 + ns.Pickup(ns.GetHost(), obj80) + ns.ObjectOn(obj84) + ns.ObjectOn(obj98) + ns.TellStory(ns.SwordsmanHurt, "Con02a:BecomeConjurer1") + ns.JournalEntry(ns.GetHost(), "BanishSpiders", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL12: + goto LABEL10 +LABEL8: + goto LABEL10 +LABEL9: + goto LABEL10 +LABEL10: + goto LABEL6 +LABEL2: + gvar52 = gvar18 + AldwinDialogStart() + ns.Pickup(ns.GetHost(), obj82) + goto LABEL6 +LABEL3: + ns.SetDialog(obj71, ns.NORMAL, AldwinDialogStart, AldwinDialogEnd) + ns.GiveXp(ns.GetHost(), 200) + AldwinDialogStart() + goto LABEL6 +LABEL4: + ns.CreatureGuard(obj71, ns.GetWaypointX(wp104), ns.GetWaypointY(wp104), ns.GetObjectX(ns.Object("AldwynBookcase")), ns.GetObjectY(ns.Object("AldwynBookcase")), 0) + goto LABEL6 +LABEL5: + ns.JournalEntry(ns.GetHost(), "LocateMineForeman", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.SetDialog(obj68, ns.NORMAL, GatekeeperDialogStart, GatekeeperDialogEnd) + ns.Frozen(ns.GetHost(), false) + ns.UnlockDoor(obj90) + ns.UnlockDoor(obj91) + ns.CancelDialog(obj71) + ns.FrameTimer(30, ImpExit) + goto LABEL6 +LABEL6: + return +} +func CheckForAldwyn() { + if !ns.IsCaller(obj71) { + goto LABEL1 + } + ns.CreatureGuard(obj71, ns.GetWaypointX(wp104), ns.GetWaypointY(wp104), 5117, 1091, 0) +LABEL1: + return +} +func ContestOfficialDialogStart() { + var v0 int + ns.DestroyEveryChat() + v0 = gvar54 + if v0 == gvar32 { + goto LABEL1 + } + if v0 == gvar33 { + goto LABEL2 + } + if v0 == gvar34 { + goto LABEL3 + } + if v0 == gvar35 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.LookAtObject(obj11, ns.GetHost()) + if !(ivar61 > 0) { + goto LABEL6 + } + ns.SetDialog(obj11, ns.YESNO, NullDialogStart, ContestOfficialDialogEnd) + ns.TellStory(ns.SwordsmanHurt, "Con02a:RetryContestChoice") + goto LABEL7 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "Con02a:ContestGreeting") +LABEL7: + goto LABEL5 +LABEL2: + ns.LookAtObject(obj11, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:ContestOfficialWaiting") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj11, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:AwardContestPrize") + ns.SetShopkeeperText(obj67, "Con02:BarkeeperDefault") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj11, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:NoMoreContestTries") + goto LABEL5 +LABEL5: + return +} +func ContestOfficialDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v0 = ns.GetAnswer(obj11) + v1 = ns.GetGold(ns.GetHost()) + v3 = gvar54 + if v3 == gvar32 { + goto LABEL1 + } + if v3 == gvar33 { + goto LABEL2 + } + if v3 == gvar34 { + goto LABEL3 + } + if v3 == gvar35 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + if !(ivar61 > 0) { + goto LABEL6 + } + if v0 != v2 { + goto LABEL7 + } + if !(v1 >= ivar58) { + goto LABEL8 + } + ns.ChangeGold(ns.GetHost(), -ivar58) + ns.SetDialog(obj11, ns.NORMAL, ContestOfficialDialogStart, EnableFiringLineTrigger) + ns.TellStory(ns.SwordsmanHurt, "Con02a:RetryContest") + ns.Pickup(ns.GetHost(), obj86) + ns.PrintToAll("Con02a:QuiverAddedToInventory") + ns.LockDoor(obj77) + ns.LockDoor(obj78) + gvar54 = gvar33 + goto LABEL9 +LABEL8: + ns.SetDialog(obj11, ns.NORMAL, NullDialogStart, ResetContestOfficialDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "Con02a:NotEnoughGold") +LABEL9: + goto LABEL10 +LABEL7: + ns.SetDialog(obj11, "FALSE", ContestOfficialDialogStart, ContestOfficialDialogEnd) +LABEL10: + goto LABEL11 +LABEL6: + ns.Pickup(ns.GetHost(), obj85) + ns.PrintToAll("Con02a:QuiverAddedToInventory") + EnableFiringLineTrigger() + ns.LockDoor(obj77) + ns.LockDoor(obj78) + gvar54 = gvar33 +LABEL11: + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + ns.Pickup(ns.GetHost(), obj87) + gvar54 = gvar35 + ns.FrameTimer(15, AwardContestExperience) + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func BridgeGuardDialogStart() { + var ( + v0 ns.ObjectID + v1 int + ) + v0 = ns.GetLastItem(ns.GetHost()) + for { + if v0 == 0 { + goto LABEL1 + } + if v0 != obj94 { + goto LABEL2 + } + ns.Delete(v0) + flag65 = true + goto LABEL1 + LABEL2: + v0 = ns.GetPreviousItem(v0) + } +LABEL1: + if !(flag65 == true && flag47 == false) { + goto LABEL4 + } + gvar57 = gvar43 +LABEL4: + v1 = gvar57 + if v1 == gvar42 { + goto LABEL5 + } + if v1 == gvar43 { + goto LABEL6 + } + if v1 == gvar44 { + goto LABEL7 + } + goto LABEL8 +LABEL5: + ns.LookAtObject(obj92, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:BridgeGuardGuarding") + goto LABEL8 +LABEL6: + ns.LookAtObject(obj92, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:BridgeGuardReward") + ns.Drop(ns.GetHost(), obj94) + ns.FrameTimer(1, PickupBoots) + flag47 = true + goto LABEL8 +LABEL7: + ns.LookAtObject(obj92, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:RandomSay") + goto LABEL8 +LABEL8: + return +} +func BridgeGuardDialogEnd() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + v4 = gvar57 + if v4 == gvar42 { + goto LABEL1 + } + if v4 == gvar43 { + goto LABEL2 + } + if v4 == gvar44 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + if !flag49 { + goto LABEL5 + } + flag49 = false + ns.JournalEntry(ns.GetHost(), "ReturnBridgeGuardsBoots", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL5: + goto LABEL4 +LABEL2: + ns.CancelDialog(obj92) + v0 = ns.GetObjectX(obj92) + v1 = ns.GetObjectY(obj92) + v2 = 3116 + v3 = 3394 + ns.MoveObject(obj92, v2, v3) + ns.MoveObject(obj93, v0, v1) + ns.CreatureGuard(obj92, v2, v3, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj93, v0, v1, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.LookAtObject(obj93, ns.GetHost()) + ns.JournalEdit(ns.GetHost(), "ReturnBridgeGuardsBoots", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.FrameTimer(15, AwardBootQuestExperience) + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func ConManDialogStart() { + ns.TellStory(ns.SwordsmanHurt, "Con02a:ConManSalesPitch") +} +func ConManDialogEnd() { + var ( + v0 int + v1 int + v2 int + ) + v0 = 0 + v1 = 1 + v2 = 0 + v0 = ns.GetAnswer(obj96) + v2 = ns.GetGold(ns.GetHost()) + if !ns.HasItem(ns.GetHost(), obj97) { + goto LABEL1 + } + ns.CancelDialog(obj96) + return +LABEL1: + if v0 != v1 { + goto LABEL2 + } + if !(v2 < ivar60) { + goto LABEL3 + } + ns.SetDialog(obj96, ns.NORMAL, NullDialogStart, ResetConManDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "Con02a:ConManNotEnoughGold") + goto LABEL2 +LABEL3: + ns.Pickup(ns.GetHost(), obj97) + ns.PrintToAll("Con02a:BowAddedToInventory") + ns.ChangeGold(ns.GetHost(), -ivar60) + ns.SetDialog(obj96, ns.NORMAL, NullDialogStart, ConManDialogEnd) + ns.TellStory(ns.SwordsmanHurt, "Con02a:ConManSale") + SlipIntoShadows() +LABEL2: + return +} +func Maiden1DialogStart() { + ns.LookAtObject(obj99, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:BarMaiden") +} +func Maiden1DialogEnd() { +} +func SpiderEngine() { + var v0 int + if !flag118 { + goto LABEL1 + } + ns.PrintToAll("SpiderEngineRunning") +LABEL1: + v0 = gvar152 + if v0 == gvar150 { + goto LABEL2 + } + if v0 == gvar151 { + goto LABEL3 + } + goto LABEL4 +LABEL2: + if !(ns.IsOwnedBy(obj165, ns.GetHost()) || ns.CurrentHealth(obj165) <= 0) { + goto LABEL5 + } + obj157 = ns.CreateObject("Spider", wp161) + ns.SetCallback(obj157, 5, TransientMonsterDie) + ns.LookAtObject(obj157, ns.GetHost()) + gvar152 = gvar151 + ns.FrameTimerWithArg(1, gvar151, SetToGuard) + ns.FrameTimer(30, SpiderEngine) + goto LABEL6 +LABEL5: + ns.FrameTimer(15, SpiderEngine) +LABEL6: + goto LABEL4 +LABEL3: + if !(ns.CurrentHealth(obj157) > 0 || ns.CurrentHealth(obj165) > 0) { + goto LABEL7 + } + ns.FrameTimer(15, SpiderEngine) + goto LABEL8 +LABEL7: + flag117 = true + SpidersFinishedPatch() +LABEL8: + goto LABEL4 +LABEL4: + return +} +func HelpMayor() { + gvar208 = gvar204 + gvar209 = gvar204 + gvar210 = gvar204 + gvar212 = gvar204 + gvar213 = gvar204 +} +func SaveMayor() { + flag147 = true +} +func ImpEnter() { + if !flag118 { + goto LABEL1 + } + ns.PrintToAll("ImpEnter()") +LABEL1: + ns.ObjectGroupOff(gvar103) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + obj62 = ns.CreateObject("Imp", wp105) + ns.SetOwner(ns.GetHost(), obj62) + ns.Enchant(obj62, ns.ENCHANT_INVULNERABLE, 0) + ns.FrameTimer(1, ImpEnterSEG2) +} +func AldwinWaiting() { + if !ns.IsTalking() { + goto LABEL1 + } + ns.FrameTimer(1, AldwinWaiting) + goto LABEL2 +LABEL1: + ns.StartDialog(obj71, ns.GetHost()) +LABEL2: + return +} +func InitializeDialogs() { + ns.StoryPic(obj68, "Townsman4Pic") + ns.StoryPic(obj69, "Townsman2Pic") + ns.StoryPic(obj11, "MalePic10") + ns.StoryPic(obj70, "Warrior3Pic") + ns.StoryPic(obj72, "TheogrinPic") + ns.StoryPic(obj71, "AldwynPic") + ns.StoryPic(obj92, "Townsman3Pic") + ns.StoryPic(obj96, "MorganPic") + ns.StoryPic(obj99, "MaidenPic") + ns.SetDialog(obj68, ns.NORMAL, GatekeeperDialogStart, GatekeeperDialogEnd) + ns.SetDialog(obj69, ns.YESNO, ContestGuardDialogStart, ContestGuardDialogEnd) + ns.SetDialog(obj70, ns.NORMAL, MayorsGuardDialogStart, MayorsGuardDialogEnd) + ns.SetDialog(obj72, ns.NORMAL, MayorDialogStart, MayorDialogEnd) + ns.SetDialog(obj71, ns.YESNO, AldwinDialogStart, AldwinDialogEnd) + ns.SetDialog(obj11, ns.NORMAL, ContestOfficialDialogStart, ContestOfficialDialogEnd) + ns.SetDialog(obj92, ns.NORMAL, BridgeGuardDialogStart, BridgeGuardDialogEnd) + ns.SetDialog(obj96, ns.YESNO, ConManDialogStart, ConManDialogEnd) + ns.SetDialog(obj99, ns.NORMAL, Maiden1DialogStart, Maiden1DialogEnd) +} +func NullDialogStart() { +} +func AwardBootQuestExperience() { + ns.MoveWaypoint(wp113, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagDrop, wp113) + ns.GiveXp(ns.GetHost(), 200) +} +func AwardContestExperience() { + ns.GiveXp(ns.GetHost(), 500) +} +func AwardMayorExperience() { + ns.GiveXp(ns.GetHost(), 1500) +} +func PickupBoots() { + ns.Pickup(obj92, obj94) + ns.Pickup(ns.GetHost(), obj95) +} +func ResetContestGuardDialogChoice() { + ns.SetDialog(obj69, ns.YESNO, ContestGuardDialogStart, ContestGuardDialogEnd) +} +func ResetContestOfficialDialogChoice() { + ns.SetDialog(obj11, ns.YESNO, ContestOfficialDialogStart, ContestOfficialDialogEnd) +} +func EnableFiringLineTrigger() { + ns.ObjectOn(obj12) + ns.SetDialog(obj11, ns.NORMAL, ContestOfficialDialogStart, ContestOfficialDialogEnd) +} +func ImpToAldwin() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp106) + v1 = ns.GetWaypointY(wp106) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ns.Delete(obj62) + ns.MoveObject(obj71, v0, v1) + gvar52 = gvar21 + ns.LookAtObject(obj71, ns.GetHost()) + ns.AudioEvent(ns.ImpRecognize, wp106) + ns.CreatureGuard(obj71, ns.GetObjectX(obj71), ns.GetObjectY(obj71), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + AldwinWaiting() +} +func ImpEnterSEG2() { + ns.Move(obj62, wp106) + ns.FrameTimer(75, ImpToAldwin) +} +func DestroyImp() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(obj62) + v1 = ns.GetObjectY(obj62) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ns.Delete(obj62) +} +func ImpExitSEG2() { + ns.Move(obj62, wp107) + ns.FrameTimer(75, DestroyImp) +} +func ImpExit() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetObjectX(obj71) + v1 = ns.GetObjectY(obj71) + v2 = ns.GetWaypointX(wp109) + v3 = ns.GetWaypointY(wp109) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ns.MoveObject(obj71, v2, v3) + ns.ObjectOff(obj71) + obj62 = ns.CreateObject("Imp", wp106) + ns.AudioEvent(ns.ImpRecognize, wp106) + ns.SetOwner(ns.GetHost(), obj62) + ns.Enchant(obj62, ns.ENCHANT_INVULNERABLE, 0) + ns.WayPointGroupOff(gvar114) + ns.FrameTimer(1, ImpExitSEG2) +} +func ResetAldwinDialogChoice() { + ns.SetDialog(obj71, ns.YESNO, AldwinDialogStart, AldwinDialogEnd) +} +func SpidersFinishedPatch() { + gvar53 = gvar29 +} +func SlipIntoShadows() { + if ns.IsVisibleTo(ns.GetHost(), obj96) { + goto LABEL1 + } + ns.MoveObject(obj96, ns.GetWaypointX(ns.Waypoint("ConManEscapeWP")), ns.GetWaypointY(ns.Waypoint("ConManEscapeWP"))) + ns.ObjectOff(obj96) + goto LABEL2 +LABEL1: + ns.FrameTimer(15, SlipIntoShadows) +LABEL2: + return +} +func ResetConManDialogChoice() { + ns.SetDialog(obj96, ns.YESNO, ConManDialogStart, ConManDialogEnd) +} +func MayorGoHome() { + ns.CreatureGuard(obj72, ns.GetWaypointX(wp112), ns.GetWaypointY(wp112), ns.GetObjectX(obj101), ns.GetObjectY(obj101), 0) +} +func UnlockTownGates() { + gvar56 = gvar41 + ns.FrameTimer(30, MayorGoHome) +} +func PlayerDeath() { + ns.DeathScreen(2) +} +func SwitchMaps() { + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(ns.Waypoint("ExitWP")), ns.GetWaypointY(ns.Waypoint("ExitWP"))) +} +func EndMission() { + ns.Blind() + ns.FrameTimer(60, SwitchMaps) +} +func InitEvilMage() { + obj119 = ns.Object("Necromancer") + obj123 = ns.Object("Wolf1") + obj124 = ns.Object("Wolf2") + obj129 = ns.Object("Julie2") + obj130 = ns.Object("Tanya2") + obj131 = ns.Object("Julie") + obj66 = ns.Object("Tanya") + obj132 = ns.Object("Lydia") + obj121 = ns.Object("SummonTrigger") + gvar134 = ns.ObjectGroup("NecroTriggers") + wp136 = ns.Waypoint("NecroWP") + wp137 = ns.Waypoint("SpiderWP") + wp138 = ns.Waypoint("EscapeWP") + wp139 = ns.Waypoint("T1WP") + wp140 = ns.Waypoint("T2WP") + wp141 = ns.Waypoint("M3WP") + wp142 = ns.Waypoint("M4WP") + wp143 = ns.Waypoint("M3RunWP") + wp144 = ns.Waypoint("M4RunWP") + ns.ObjectOff(obj121) + ns.FrameTimer(1, FunctionSetup) +} +func FunctionSetup() { + ns.SetOwner(ns.GetHost(), obj129) + ns.SetOwner(ns.GetHost(), obj130) + ns.SetOwner(ns.GetHost(), obj131) + ns.SetOwner(ns.GetHost(), obj66) + ns.SetOwner(ns.GetHost(), obj132) + ns.SetOwner(ns.GetHost(), obj123) + ns.SetOwner(ns.GetHost(), obj124) + ns.StoryPic(obj130, "MaidenPic3") + ns.StoryPic(obj132, "SnobbyGirlPic") + ns.SetDialog(obj130, ns.NORMAL, Maiden4TempStart, Maiden4TempEnd) + ns.SetDialog(obj132, ns.NORMAL, Maiden7TempStart, Maiden7TempEnd) +} +func T1Trigger() { + if flag146 { + goto LABEL1 + } + ivar145 += 1 + ns.CreatureGuard(obj125, ns.GetObjectX(obj125), ns.GetObjectY(obj125), ns.GetObjectX(obj119), ns.GetObjectY(obj119), 0) + if !(ivar145 >= 4) { + goto LABEL1 + } + NecromancerSummon() +LABEL1: + return +} +func T2Trigger() { + if flag146 { + goto LABEL1 + } + ivar145 += 1 + ns.CreatureGuard(ns.GetTrigger(), ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), ns.GetObjectX(obj119), ns.GetObjectY(obj119), 0) + if !(ivar145 >= 4) { + goto LABEL1 + } + NecromancerSummon() +LABEL1: + return +} +func M3Trigger() { + if flag146 { + goto LABEL1 + } + ivar145 += 1 + ns.CreatureGuard(ns.GetTrigger(), ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), ns.GetObjectX(obj119), ns.GetObjectY(obj119), 0) + if !(ivar145 >= 4) { + goto LABEL1 + } + NecromancerSummon() +LABEL1: + return +} +func M4Trigger() { + if flag146 { + goto LABEL1 + } + ivar145 += 1 + ns.CreatureGuard(ns.GetTrigger(), ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), ns.GetObjectX(obj119), ns.GetObjectY(obj119), 0) + if !(ivar145 >= 4) { + goto LABEL1 + } + NecromancerSummon() +LABEL1: + return +} +func StartNecroPiece() { + ns.MusicPushEvent() + ns.ObjectGroupOff(gvar134) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.CancelDialog(obj130) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), ns.ObjectID(wp136)) // FIXME + ns.Move(obj119, wp136) + ns.ObjectOn(obj125) + ns.ObjectOn(obj126) +} +func NecroInPosition() { + ns.CreatureIdle(obj119) + ns.LookAtObject(obj119, ns.GetHost()) + ns.MoveWaypoint(wp113, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.NecromancerRecognize, wp113) + ns.MoveWaypoint(wp113, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.MaleNPC1Talkable, wp113) + ns.AudioEvent(ns.MaleNPC2Talkable, wp113) + ns.Move(obj125, wp139) + ns.Move(obj126, wp140) + ns.Move(obj129, wp141) + ns.Move(obj130, wp142) + ns.FrameTimer(1, NecromancerStart) +} +func NecromancerStart() { + ns.Music(11, 100) + ns.SetDialog(obj119, ns.NORMAL, NecroBegin, NecroDone) + ns.StoryPic(obj119, "NecromancerPic") + ns.StartDialog(obj119, ns.GetHost()) +} +func NecromancerSummon() { + if !flag149 { + goto LABEL1 + } + flag146 = true + ns.ObjectOn(obj121) + ns.LookAtObject(obj119, obj121) + ns.CastSpellObjectLocation(ns.SPELL_SUMMON_SPIDER, obj119, 1374, 3207) + ns.AudioEvent(ns.NecromancerTaunt, wp113) + goto LABEL2 +LABEL1: + ns.FrameTimer(2, NecromancerSummon) +LABEL2: + return +} +func SpiderRun() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + if ns.IsCaller(obj119) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.NecromancerTaunt, wp113) + obj120 = ns.GetCaller() + ns.MoveWaypoint(wp113, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.Maiden1Retreat, wp113) + ns.Move(obj129, wp143) + ns.FrameTimer(1, SpiderActivate) +LABEL1: + return +} +func SpiderActivate() { + ns.AggressionLevel(obj120, 0) + ns.SetOwner(ns.GetHost(), obj120) + ns.Move(obj120, wp137) + ns.AudioEvent(ns.Maiden2Retreat, wp113) + ns.Move(obj130, wp144) + HenrickSayAttack() +} +func HenrickSayAttack() { + ns.FrameTimer(15, PepperAttack) +} +func PepperAttack() { + ns.AudioEvent(ns.SwordsmanRecognize, wp113) + ns.Attack(obj126, obj119) + ns.CreatureGuard(obj119, ns.GetObjectX(obj119), ns.GetObjectY(obj119), ns.GetObjectX(obj126), ns.GetObjectY(obj126), 0) +} +func NecroHit() { + if flag148 { + goto LABEL1 + } + if !ns.IsCaller(obj126) { + goto LABEL1 + } + flag148 = true + ns.Chat(obj119, "Con02A:NecroTalk02") + ns.FrameTimer(60, NecroPoof) +LABEL1: + return +} +func NecroPoof() { + ns.DestroyEveryChat() + ns.CreatureIdle(obj125) + ns.CreatureIdle(obj126) + ns.LookAtObject(obj126, obj119) + ns.LookAtObject(obj125, obj119) + ns.Move(obj119, wp138) + ns.Attack(obj126, obj119) + ns.Attack(obj125, obj119) + ns.Chat(obj119, "Con02A:NecroTalk03") + ns.FrameTimer(120, SetpieceOver) +} +func SetpieceOver() { + ns.DestroyEveryChat() + ns.WideScreen(false) + ns.ObjectGroupOn(gvar135) + ns.Frozen(ns.GetHost(), false) + ns.Delete(obj119) + ns.MoveObject(obj125, 1678, 2623) + ns.MoveObject(obj126, 1708, 2655) + ns.CreatureGuard(obj125, 1678, 2623, 1708, 2655, 0) + ns.CreatureGuard(obj126, 1708, 2655, 1678, 2623, 0) + ns.Wander(obj127) + ns.Wander(obj128) + ns.Wander(obj131) + ns.Wander(obj66) + ns.StoryPic(obj131, "MaidenPic2") + ns.StoryPic(obj66, "MaidenPic3") + ns.SetDialog(obj125, ns.NORMAL, Town1TempStart, Town1TempEnd) + ns.SetDialog(obj126, ns.NORMAL, Town2TempStart, Town2TempEnd) + ns.SetDialog(obj131, ns.NORMAL, Maiden5TempStart, Maiden5TempEnd) + ns.SetDialog(obj66, ns.NORMAL, Maiden6TempStart, Maiden6TempEnd) + ns.MusicPopEvent() +} +func DestroySpider() { + if !ns.IsCaller(obj120) { + goto LABEL1 + } + ns.Delete(ns.GetCaller()) +LABEL1: + return +} +func M3Swap() { + if !ns.IsCaller(obj129) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj131, ns.GetObjectX(obj129), ns.GetObjectY(obj129)) + ns.Delete(obj129) +LABEL1: + return +} +func M4Swap() { + if !ns.IsCaller(obj130) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj66, ns.GetObjectX(obj130), ns.GetObjectY(obj130)) + ns.Delete(obj130) +LABEL1: + return +} +func NecroBegin() { + ns.TellStory(ns.HumanMaleEatFood, "Con02A:NecroTalk01") +} +func NecroDone() { + ns.CancelDialog(obj119) + ns.CreatureGuard(obj119, ns.GetObjectX(obj119), ns.GetObjectY(obj119), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + flag149 = true +} +func NecroYellStart() { + ns.Frozen(obj125, true) + ns.Frozen(obj126, true) + ns.CreatureIdle(obj125) + ns.CreatureIdle(obj126) + ns.LookAtObject(obj126, obj119) + ns.LookAtObject(obj125, obj119) + ns.TellStory(ns.HumanMaleEatFood, "Con02A:NecroTalk03") +} +func NecroYellEnd() { + ns.CancelDialog(obj119) + ns.Frozen(obj126, false) + ns.Frozen(obj125, false) + ns.Move(obj119, wp138) + ns.Attack(obj126, obj119) + ns.Attack(obj125, obj119) + ns.FrameTimer(120, SetpieceOver) +} +func Town1TempStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman10Talk03") +} +func Town1TempEnd() { + ns.Wander(obj125) + ns.SetDialog(obj125, ns.NORMAL, Town1TalkStart, Town1TalkEnd) +} +func Town2TempStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman13Talk02") +} +func Town2TempEnd() { + ns.Wander(obj126) + ns.SetDialog(obj126, ns.NORMAL, Town2TalkStart, Town2TalkEnd) +} +func Maiden5TempStart() { + ns.Frozen(obj131, true) + ns.CreatureIdle(obj131) + ns.LookAtObject(obj131, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Maiden6Talk03") +} +func Maiden5TempEnd() { + ns.Frozen(obj131, false) + ns.Wander(obj131) + ns.SetDialog(obj131, ns.NORMAL, Maiden5TalkStart, Maiden5TalkEnd) +} +func Maiden4TempStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Maiden3Talk01") +} +func Maiden4TempEnd() { + ns.SetDialog(obj130, ns.NORMAL, Maiden4TempStart, Maiden4TempEnd) +} +func Maiden6TempStart() { + ns.Frozen(obj66, true) + ns.CreatureIdle(obj66) + ns.LookAtObject(obj66, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Maiden6Talk01") +} +func Maiden6TempEnd() { + ns.Frozen(obj66, false) + ns.Wander(obj66) + ns.SetDialog(obj66, ns.NORMAL, Maiden6TempStart, Maiden6TempEnd) +} +func Maiden7TempStart() { + ns.LookAtObject(obj132, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con02a:BarMaiden2") +} +func Maiden7TempEnd() { + ns.SetDialog(obj132, ns.NORMAL, Maiden7TempStart, Maiden7TempEnd) +} +func Town1TalkStart() { + var ( + v0 int + v1 int + ) + ns.Frozen(obj125, true) + ns.CreatureIdle(obj125) + ns.LookAtObject(obj125, ns.GetHost()) + if gvar208 != gvar202 { + goto LABEL1 + } + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL2 + } + if v1 == 2 { + goto LABEL3 + } + goto LABEL4 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman10Talk02") + goto LABEL4 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman10Talk03") + goto LABEL4 +LABEL4: + goto LABEL5 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman10Talk01") +LABEL5: + return +} +func Town1TalkEnd() { + ns.Frozen(obj125, false) + ns.Wander(obj125) + ns.SetDialog(obj125, ns.NORMAL, Town1TalkStart, Town1TalkEnd) +} +func Town2TalkStart() { + var ( + v0 int + v1 int + ) + ns.Frozen(obj126, true) + ns.CreatureIdle(obj126) + ns.LookAtObject(obj126, ns.GetHost()) + if gvar209 != gvar204 { + goto LABEL1 + } + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL2 + } + if v1 == 2 { + goto LABEL3 + } + goto LABEL4 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman13Talk01") + goto LABEL4 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman13Talk03") + goto LABEL4 +LABEL4: + goto LABEL5 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman13Talk02") +LABEL5: + return +} +func Town2TalkEnd() { + ns.Frozen(obj126, false) + ns.Wander(obj126) + ns.SetDialog(obj126, ns.NORMAL, Town2TalkStart, Town2TalkEnd) +} +func Maiden5TalkStart() { + ns.Frozen(obj131, true) + ns.CreatureIdle(obj131) + ns.LookAtObject(obj131, ns.GetHost()) + if flag147 { + goto LABEL1 + } + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Maiden6Talk03") + goto LABEL2 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Maiden6Talk02") +LABEL2: + return +} +func Maiden5TalkEnd() { + ns.Frozen(obj131, false) + ns.Wander(obj131) + ns.SetDialog(obj131, ns.NORMAL, Maiden5TalkStart, Maiden5TalkEnd) +} +func EnableRandomBump() { + flag159 = true +} +func RandomBump() { + if !(ns.IsCaller(ns.GetHost()) && flag159) { + goto LABEL1 + } + ns.Chat(ns.GetTrigger(), "Con02a:RandomBump") + flag159 = false + ns.FrameTimer(ivar160, EnableRandomBump) +LABEL1: + return +} +func RestAwhile() { + var v0 int + v0 = ns.Random(60, 120) + ns.PauseObject(ns.GetCaller(), v0) +} +func EnableSpiders() { + ns.ObjectGroupOn(gvar167) +} +func OpenMagicShopElevatorWalls() { + ns.WallGroupOpen(gvar168) +} +func TransientMonsterDie() { + ns.DeleteObjectTimer(ns.GetTrigger(), 120) +} +func SetToGuard(a1 int) { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = a1 + if v2 == gvar150 { + goto LABEL1 + } + if v2 == gvar151 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + v0 = ns.GetWaypointX(wp163) + v1 = ns.GetWaypointY(wp163) + ns.MoveObject(obj165, ns.GetWaypointX(wp161), ns.GetWaypointY(wp161)) + ns.CreatureGuard(obj165, v0, v1, fvar155, fvar156, 100) + goto LABEL3 +LABEL2: + v0 = ns.GetWaypointX(wp163) + v1 = ns.GetWaypointY(wp163) + ns.CreatureGuard(obj157, v0, v1, fvar155, fvar156, 100) + goto LABEL3 +LABEL3: + return +} +func CallToConjurer() { + if !(ns.IsCaller(ns.GetHost()) && flag45 == true && flag158 == false) { + goto LABEL1 + } + ns.Chat(ns.GetTrigger(), "Con02a:CallToConjurer") + flag158 = true +LABEL1: + return +} +func MayorCall() { + ns.Chat(obj72, "Con02a:MayorCall") + SpiderEngine() +} +func MayorsGateTriggerFilter() int { + if !ns.IsCaller(obj72) { + goto LABEL1 + } + if !flag118 { + goto LABEL2 + } + ns.PrintToAll("Mayor detected at gown gates.") +LABEL2: + return 1 + goto LABEL3 +LABEL1: + if !flag118 { + goto LABEL4 + } + ns.PrintToAll("Trigger hit by object other than Mayor Theogrin") +LABEL4: + return 0 +LABEL3: + return 0 +} +func UnlockMayorBedroomoor() { + ns.UnlockDoor(obj88) +} +func LockMayorsBedroomDoor() { + ns.LockDoor(obj88) +} +func FoundBoots() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("Con02a:FoundBoots") + ns.AudioEvent(ns.JournalEntryAdd, ns.Waypoint("BootsAudioOrigin")) +} +func Secret01Found() { + ns.ObjectGroupOff(gvar166) + ns.MoveWaypoint(wp164, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp164) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func Secret02Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp164, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp164) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func EnemyGoHome() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func DebugOn() { + flag118 = true + ns.PrintToAll("Debug mode is enabled.") +} +func OwnObjects() { + ns.GroupSetOwner(ns.GetHost(), gvar135) + ns.SetOwner(ns.GetHost(), obj68) + ns.SetOwner(ns.GetHost(), obj96) + ns.SetOwner(ns.GetHost(), obj99) + ns.SetOwner(ns.GetHost(), obj128) + ns.SetOwner(ns.GetHost(), obj176) + ns.SetOwner(ns.GetHost(), obj177) + ns.SetOwner(ns.GetHost(), obj125) + ns.SetOwner(ns.GetHost(), obj126) + ns.SetOwner(ns.GetHost(), obj127) + ns.SetOwner(ns.GetHost(), obj93) + ns.ObjectGroupOff(gvar135) +} +func InitializePiece() { + obj201 = ns.Object("Jacob") + obj100 = ns.Object("Henrick") + obj122 = ns.Object("Pepper") + obj133 = ns.Object("NecroDoor") + obj214 = ns.Object("TempDoorR") + obj215 = ns.Object("TempDoorL") + obj216 = ns.Object("CemDoorR") + obj217 = ns.Object("CemDoorL") + gvar218 = ns.ObjectGroup("WolfTriggers") + wp113 = ns.Waypoint("PlayerSounds") + wp219 = ns.Waypoint("WolfCreateWP") + ns.FrameTimer(1, SetupCreatures) +} +func DialogSetup() { + ns.StoryPic(obj125, "MalePic4") + ns.StoryPic(obj126, "MalePic11") + ns.StoryPic(obj127, "MalePic12") + ns.StoryPic(obj128, "MaidenPic4") + ns.StoryPic(obj201, "WardenPic") + ns.StoryPic(obj100, "HenrickPic") + ns.SetDialog(obj127, ns.NORMAL, Town3TalkStart, Town3TalkEnd) + ns.SetDialog(obj201, ns.NORMAL, Jail1Start, Jail1End) +} +func PlayIxTownMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(15, 40) +LABEL1: + return +} +func DisableElevators() { + PlayIxTownMusic() + ns.JournalEntry(ns.GetHost(), "LocateAldwyn", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.ObjectOff(obj84) + ns.ObjectOff(obj171) + ns.ObjectOff(obj98) +} +func PickupObjects() { + ns.Pickup(obj11, obj87) + ns.Pickup(obj11, obj85) + ns.Pickup(obj11, obj86) + ns.Pickup(obj96, obj97) +} +func MapInitialize() { + obj71 = ns.Object("Aldwyn") + obj68 = ns.Object("Geoff") + obj72 = ns.Object("Mayor_Theogrin") + obj69 = ns.Object("Contest_Guard") + obj70 = ns.Object("Mayor's_Guard") + obj67 = ns.Object("Barkeeper") + obj11 = ns.Object("Contest_Official") + obj92 = ns.Object("Bridge_Guard") + obj93 = ns.Object("Guard2") + obj176 = ns.Object("IxGuard1") + obj177 = ns.Object("IxGuard2") + obj165 = ns.Object("MayorsSpider1") + obj75 = ns.Object("MayorGate1") + obj76 = ns.Object("MayorGate2") + obj77 = ns.Object("ContestGate1") + obj78 = ns.Object("ContestGate2") + obj79 = ns.Object("ContestGate3") + obj169 = ns.Object("BasementDoor") + obj84 = ns.Object("AldwinElevator") + obj171 = ns.Object("MayorElevator") + obj81 = ns.Object("RatFieldGuide") + obj82 = ns.Object("BigSpiderFG") + obj80 = ns.Object("CharmSpell") + obj83 = ns.Object("ElevatorDoor") + obj97 = ns.Object("CheapBow") + obj173 = ns.Object("Quiver") + obj12 = ns.Object("FiringLineTrigger") + obj87 = ns.Object("ContestPrize") + obj85 = ns.Object("ContestQuiver1") + obj86 = ns.Object("ContestQuiver2") + obj73 = ns.Object("LeatherTunic") + obj88 = ns.Object("MayorsBedroomDoor") + obj90 = ns.Object("RightTownGate") + obj91 = ns.Object("LeftTownGate") + obj174 = ns.Object("TownGate01") + obj175 = ns.Object("TownGate02") + obj89 = ns.Object("Gold") + obj125 = ns.Object("Bryan") + obj126 = ns.Object("Clyde") + obj127 = ns.Object("Tommy") + obj74 = ns.Object("Cloak") + obj94 = ns.Object("BridgeGuardsBoots") + obj95 = ns.Object("BootsReward") + obj96 = ns.Object("Morgan") + obj98 = ns.Object("MagicShopElevator") + obj99 = ns.Object("Joyce") + obj128 = ns.Object("Gretchen") + obj101 = ns.Object("MayorsFireplace") + obj178 = ns.Object("CaveDoor") + obj102 = ns.Object("Heckler") + obj179 = ns.Object("WaspNest") + obj180[0] = ns.Object("Wasp1") + obj180[1] = ns.Object("Wasp2") + gvar135 = ns.ObjectGroup("NPCs") + gvar181 = ns.ObjectGroup("SpiderDropTriggers1") + gvar182 = ns.ObjectGroup("SpiderDropTriggers2") + gvar103 = ns.ObjectGroup("GateTriggers") + gvar183 = ns.ObjectGroup("WaspTriggers") + gvar184 = ns.ObjectGroup("Urchins") + gvar167 = ns.ObjectGroup("Spiders") + gvar166 = ns.ObjectGroup("Secret01Triggers") + gvar168 = ns.WallGroup("MagicShopElevatorWalls") + wp193 = ns.Waypoint("WellWP") + wp104 = ns.Waypoint("Study") + wp185 = ns.Waypoint("MayorsGates") + wp13 = ns.Waypoint("TargetWP1") + wp14 = ns.Waypoint("TargetWP2") + wp15 = ns.Waypoint("TargetWP3") + wp186 = ns.Waypoint("OfficialWP") + wp187 = ns.Waypoint("CreationWP") + wp16 = ns.Waypoint("ContestAudioOrigin") + wp188 = ns.Waypoint("UrchinWP") + wp105 = ns.Waypoint("ImpWP1") + wp106 = ns.Waypoint("ImpWP2") + wp107 = ns.Waypoint("ImpWP3") + wp108 = ns.Waypoint("ImpWP4") + wp109 = ns.Waypoint("AldwinExitWP") + wp189 = ns.Waypoint("SpiderDropPoint1") + wp190 = ns.Waypoint("SpiderDropPoint2") + wp110 = ns.Waypoint("MayorRewardPath") + wp111 = ns.Waypoint("TownGatePath") + wp112 = ns.Waypoint("MayorHome") + wp191 = ns.Waypoint("AudioOrigin") + wp162 = ns.Waypoint("StudySpiderWP") + wp161 = ns.Waypoint("BigSpiderWP") + wp163 = ns.Waypoint("SpiderGuardPoint") + wp192 = ns.Waypoint("WaspCreationWP") + wp164 = ns.Waypoint("SecretAudioWP") + wp194 = ns.Waypoint("MayorsGuardWP") + wp199 = ns.Waypoint("BridgeGuardWP") + wp198 = ns.Waypoint("ContestGuardWP") + wp195 = ns.Waypoint("GatekeeperWP") + wp196 = ns.Waypoint("Gatekeeper2WP") + wp197 = ns.Waypoint("Gatekeeper3WP") + wp200[0] = ns.Waypoint("WaspWP1") + wp200[1] = ns.Waypoint("WaspWP2") + gvar114 = ns.WaypointGroup("ImpEntrancePath") + gvar115 = ns.WaypointGroup("MayorsPathToGate") + gvar116 = ns.WaypointGroup("MayorsHomeSpiderPath") + ns.WayPointGroupOff(gvar115) + ns.LockDoor(obj75) + ns.LockDoor(obj76) + ns.LockDoor(obj174) + ns.LockDoor(obj175) + ns.LockDoor(obj77) + ns.LockDoor(obj78) + ns.LockDoor(obj79) + ns.LockDoor(obj169) + ns.LockDoor(obj88) + ns.LockDoor(obj90) + ns.LockDoor(obj91) + ns.LockDoor(obj178) + InitializePiece() + InitEvilMage() + DialogSetup() + InitializeDialogs() + ns.StartupScreen(2) + ns.FrameTimer(1, OwnObjects) + ns.FrameTimer(35, DisableElevators) +} +func DebugOff() { + flag118 = false + ns.PrintToAll("Debug mode has been disabled.") +} +func AldwinCheck() { + if !ns.HasItem(obj71, obj80) { + goto LABEL1 + } + ns.PrintToAll("Spell is in Aldwins inv.") + goto LABEL2 +LABEL1: + ns.PrintToAll("Spell not found in Aldwins inv.") +LABEL2: + if !ns.HasItem(obj71, obj81) { + goto LABEL3 + } + ns.PrintToAll("Field Guide is in Aldwins inv.") + goto LABEL4 +LABEL3: + ns.PrintToAll("Field Guide not found in Aldwins inv.") +LABEL4: + return +} +func PlayUrchinDenMusic() { + ns.Music(17, 100) +} +func PlayTunnelMusic() { + ns.Music(18, 100) +} +func ExitDen() { + gvar211 = gvar205 + ns.SetDialog(obj201, ns.NORMAL, Jail2Start, Jail2End) + ns.MoveObject(obj123, 2969, 2354) + ns.MoveObject(obj124, 3016, 2308) + ns.CreatureGuard(obj123, 2969, 2354, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj124, 3016, 2308, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetOwner(ns.GetHost(), obj123) + ns.SetOwner(ns.GetHost(), obj124) +} +func Town3TalkStart() { + ns.Frozen(obj127, true) + ns.CreatureIdle(obj127) + ns.LookAtObject(obj127, ns.GetHost()) + if gvar210 != gvar202 { + goto LABEL1 + } + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman9Talk01") + goto LABEL2 +LABEL1: + if gvar210 == gvar207 { + goto LABEL3 + } + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman9Talk02") +LABEL3: + if gvar210 != gvar207 { + goto LABEL2 + } + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman9Talk03") +LABEL2: + return +} +func Town3TalkEnd() { + ns.Frozen(obj127, false) + ns.Wander(obj127) + ns.SetDialog(obj127, ns.NORMAL, Town3TalkStart, Town3TalkEnd) +} +func Maiden2TalkStart() { + ns.Frozen(obj128, true) + ns.CreatureIdle(obj128) + ns.LookAtObject(obj128, ns.GetHost()) + if gvar211 == gvar205 { + goto LABEL1 + } + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Townsman2Talk02") + goto LABEL2 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:Maiden2Talk01") +LABEL2: + return +} +func Maiden2TalkEnd() { + ns.Frozen(obj128, false) + ns.Wander(obj128) + ns.SetDialog(obj128, ns.NORMAL, Maiden2TalkStart, Maiden2TalkEnd) +} +func HenrickGreetStart() { + ns.DestroyEveryChat() + ns.TellStory(ns.HumanMaleEatFood, "Con02A:HenrickTalk03") +} +func HenrickGreetEnd() { + ns.SetDialog(obj100, ns.NORMAL, HenrickStart, HenrickEnd) +} +func HenrickStart() { + var ( + v0 int + v1 int + v2 int + ) + ns.DestroyEveryChat() + if gvar213 != gvar202 { + goto LABEL1 + } + v0 = ns.Random(1, 3) + v1 = v0 + if v1 == 1 { + goto LABEL2 + } + if v1 == 2 { + goto LABEL3 + } + if v1 == 3 { + goto LABEL4 + } + goto LABEL1 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:HenrickTalk04") + goto LABEL1 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:HenrickTalk05") + goto LABEL1 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:HenrickTalk03") + goto LABEL1 +LABEL1: + if gvar213 != gvar204 { + goto LABEL5 + } + v0 = ns.Random(1, 2) + v2 = v0 + if v2 == 1 { + goto LABEL6 + } + if v2 == 2 { + goto LABEL7 + } + goto LABEL5 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:HenrickTalk04") + goto LABEL5 +LABEL7: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:HenrickTalk06") + goto LABEL5 +LABEL5: + return +} +func HenrickEnd() { + ns.SetDialog(obj100, ns.NORMAL, HenrickStart, HenrickEnd) +} +func Jail1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk01") +} +func Jail1End() { + ns.SetDialog(obj201, ns.NORMAL, Jail1Start, Jail1End) +} +func Jail2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk02") +} +func Jail2End() { + ns.SetDialog(obj201, ns.NORMAL, Jail2Start, Jail2End) +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp193) +} +func SetupCreatures() { + ns.SetOwner(ns.GetHost(), obj100) + ns.SetOwner(ns.GetHost(), obj201) + ns.SetOwner(ns.GetHost(), obj122) + ns.LockDoor(obj133) + ns.LockDoor(obj214) + ns.LockDoor(obj215) + ns.LockDoor(obj216) + ns.LockDoor(obj217) +} +func StartWolfAttack() { + if flag220 { + goto LABEL1 + } + ns.ObjectGroupOff(gvar218) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj100) + ns.MoveObject(obj122, ns.GetWaypointX(wp219), ns.GetWaypointY(wp219)) + ns.FrameTimer(1, ActivateWolf) +LABEL1: + return +} +func ActivateWolf() { + ns.CreatureIdle(obj122) + ns.AggressionLevel(obj122, 0.83) + ns.Attack(obj122, ns.GetHost()) + flag220 = true + ns.FrameTimer(50, HenrickWarning) +} +func HenrickWarning() { + ns.Chat(obj100, "Con02A:HenrickTalk01") + ns.Frozen(obj100, true) + ns.CreatureIdle(obj100) + ns.LookAtObject(obj100, obj122) + ns.Frozen(obj122, true) + ns.LookAtObject(obj122, obj100) + ns.MoveWaypoint(wp113, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.CharmCast, wp113) + ns.FrameTimer(20, CharmPepper) +} +func CharmPepper() { + ns.Effect(ns.CHARM, ns.GetObjectX(obj100), ns.GetObjectY(obj100), ns.GetObjectX(obj122), ns.GetObjectY(obj122)) + ivar221 += 1 + if !(ivar221 < 60) { + goto LABEL1 + } + ns.FrameTimer(1, CharmPepper) + goto LABEL2 +LABEL1: + CharmEnd() +LABEL2: + return +} +func CharmEnd() { + ns.AudioEvent(ns.CharmSuccess, wp113) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj100, false) + ns.Frozen(obj122, false) + ns.CreatureGuard(obj100, ns.GetObjectX(obj100), ns.GetObjectY(obj100), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetOwner(ns.GetHost(), obj122) + ns.AggressionLevel(obj122, 0.16) + ns.CreatureFollow(obj122, obj100) + ns.Chat(obj100, "Con02A:HenrickTalk02") + ns.SetDialog(obj100, ns.NORMAL, HenrickGreetStart, HenrickGreetEnd) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con02a/dummy_test.go b/examples/con02a/dummy_test.go new file mode 100644 index 0000000..6ea0969 --- /dev/null +++ b/examples/con02a/dummy_test.go @@ -0,0 +1,6 @@ +package con02a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con03a/con03a.go b/examples/con03a/con03a.go new file mode 100644 index 0000000..a0305ef --- /dev/null +++ b/examples/con03a/con03a.go @@ -0,0 +1,519 @@ +package con03a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + fvar4 float32 + fvar5 float32 + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + wp24 ns.WaypointID + wp25 ns.WaypointID + obj26 ns.ObjectID + obj27 ns.ObjectID + wp28 ns.WaypointID + wp29 ns.WaypointID + gvar30 int + gvar31 int + gvar32 int + gvar33 int + gvar34 int + gvar35 int + gvar36 int + gvar37 int + gvar38 int + gvar39 int + gvar40 int + gvar41 int + gvar42 int + gvar43 ns.ObjectGroupID + gvar44 ns.ObjectGroupID + gvar45 ns.ObjectGroupID + obj46 ns.ObjectID + gvar47 int + obj48 ns.ObjectID + obj49 ns.ObjectID + gvar50 int + gvar51 int + gvar52 int + gvar53 int + gvar54 int + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + obj59 ns.ObjectID + gvar60 ns.ObjectGroupID + obj61 ns.ObjectID + gvar62 ns.ObjectGroupID + flag63 bool + obj64 ns.ObjectID + flag65 bool + flag66 bool +) + +func init() { + fvar4 = 184 + fvar5 = -772 + gvar30 = 1 + gvar31 = 1 + gvar32 = 0 + gvar33 = 0 + gvar34 = 1 + gvar35 = 2 + gvar36 = gvar33 + gvar37 = 0 + gvar38 = 1 + gvar39 = gvar37 + gvar40 = 0 + gvar41 = 1 + gvar42 = gvar40 + gvar50 = 0 + gvar51 = 1 + gvar52 = 2 + gvar53 = 3 + gvar54 = gvar50 + flag63 = true + flag65 = false + flag66 = false +} +func DunMirGuard1TalkStart() { + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:DunMirGuard1") +} +func DunMirGuard1TalkEnd() { +} +func DunMirGuard2TalkStart() { + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:DunMirGuard2") +} +func DunMirGuard2TalkEnd() { +} +func MineGuardDialogStart() { + var v0 int + v0 = gvar31 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 4 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.DemonRecognize, "Con03A.scr:MineGuardA") + goto LABEL5 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con03A.scr:MineGuardB") + goto LABEL5 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con03A.scr:MineGuardC") + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func MineGuardDialogEnd() { + var v0 int + v0 = gvar31 + if v0 == 1 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + gvar31 = 2 + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func GalavaGuard1TalkStart() { + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:GalavaGuard1") +} +func GalavaGuard1TalkEnd() { +} +func GalavaGuard2TalkStart() { + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:GalavaGuard2") +} +func GalavaGuard2TalkEnd() { +} +func IxGuard1TalkStart() { + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:IxGuard1") +} +func IxGuard1TalkEnd() { +} +func IxGuard2TalkStart() { + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:IxGuard2") +} +func IxGuard2TalkEnd() { +} +func CaptainDialogStart() { + var v0 int + ns.LookAtObject(obj21, ns.GetHost()) + v0 = gvar30 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:JandorA") + goto LABEL5 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:JandorB") + goto LABEL5 +LABEL3: + ns.CancelDialog(obj21) + ChapterEnd() + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func CaptainDialogEnd() { + var v0 int + v0 = gvar30 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.JournalEdit(ns.GetHost(), "Con03FindAirshipCap", 4) + ns.SetDialog(obj21, ns.NORMAL, CaptainDialogStart, CaptainDialogEnd) + ns.PrintToAll("Con03C.scr:TaskComplete") + gvar30 = 2 + CaptainDialogStart() + goto LABEL5 +LABEL2: + gvar30 = 3 + goto LABEL5 +LABEL3: + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func InitializeRobbery() { + obj61 = ns.Object("Robber") + gvar62 = ns.ObjectGroup("RobberyTriggers") +} +func HermitTalkStart() { + var v0 int + ns.LookAtObject(obj46, ns.GetHost()) + v0 = gvar54 + if v0 == gvar50 { + goto LABEL1 + } + if v0 == gvar51 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + if !ns.HasItem(ns.GetHost(), obj48) { + goto LABEL4 + } + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:HermitHappy") + gvar54 = gvar52 + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:HermitMeet01") +LABEL5: + goto LABEL3 +LABEL2: + if !ns.HasItem(ns.GetHost(), obj48) { + goto LABEL6 + } + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:HermitHappy") + gvar54 = gvar52 + goto LABEL7 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:HermitMeet02") +LABEL7: + goto LABEL3 +LABEL3: + return +} +func HermitTalkEnd() { + var v0 int + v0 = gvar54 + if v0 == gvar50 { + goto LABEL1 + } + if v0 == gvar52 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar32 = 1 + gvar54 = gvar51 + ns.JournalEntry(ns.GetHost(), "Con03AHermitQuest", 2) + ns.PrintToAll("Con03C.scr:NewTask") + goto LABEL3 +LABEL2: + ns.CancelDialog(obj46) + ns.GiveXp(ns.GetHost(), 500) + ns.Pickup(ns.GetHost(), obj49) + ns.Delete(obj48) + if gvar32 != 1 { + goto LABEL4 + } + ns.JournalEdit(ns.GetHost(), "Con03AHermitQuest", 4) + ns.PrintToAll("Con03C.scr:TaskComplete") +LABEL4: + goto LABEL3 +LABEL3: + return +} +func OwnDudes() { + ns.LockDoor(obj10) + ns.LockDoor(obj11) + ns.LockDoor(obj12) + ns.LockDoor(obj13) +} +func ChapterEnd() { + ns.Blind() + ns.Delete(obj48) + ns.Delete(ns.Object("Con02a:BridgeGuardsBoots")) + ns.FrameTimer(60, ChapterEndB) +} +func ChapterEndB() { + ns.MoveObject(ns.GetHost(), 650, 3421) +} +func InitializeWaspNest() { + obj26 = ns.Object("Wasp01") + obj27 = ns.Object("Wasp02") + obj64 = ns.Object("WaspNest") + wp28 = ns.Waypoint("WaspCreateWP01") + wp29 = ns.Waypoint("WaspCreateWP02") + ns.Wander(obj26) + ns.Wander(obj27) +} +func PlayOutdoorMusic() { + ns.Music(21, 100) +} +func InitializeMusicStuff() { + obj59 = ns.Object("BanditCampEntranceTrigger") + gvar60 = ns.ObjectGroup("BanditCampExitTrigger") +} +func MineJournalEntry() { + ns.JournalEntry(ns.GetHost(), "LocateMineForeman", 2) +} +func MapInitialize() { + obj6 = ns.Object("Kenneth") + obj7 = ns.Object("Lance") + obj8 = ns.Object("Rastur") + obj9 = ns.Object("Kirik") + obj10 = ns.Object("GalavaGate1") + obj11 = ns.Object("GalavaGate2") + obj17 = ns.Object("IxGate1") + obj18 = ns.Object("IxGate2") + obj12 = ns.Object("DunMirDoor1") + obj13 = ns.Object("DunMirDoor2") + obj19 = ns.Object("Loproc") + obj20 = ns.Object("BiffordByzanti") + obj14 = ns.Object("Millard") + obj15 = ns.Object("Janero") + obj16 = ns.Object("Horst") + obj17 = ns.Object("IxGate1") + obj18 = ns.Object("IxGate2") + gvar43 = ns.ObjectGroup("WaspGroup1") + gvar44 = ns.ObjectGroup("WaspGroup2") + gvar45 = ns.ObjectGroup("FishGroup") + obj21 = ns.Object("Captain") + obj22 = ns.Object("AirshipBasket") + obj23 = ns.Object("AirshipShadow") + wp55 = ns.Waypoint("JandorWP") + wp56 = ns.Waypoint("JandorLookWP") + wp57 = ns.Waypoint("BasketWP") + wp58 = ns.Waypoint("BasketShadowWP") + wp24 = ns.Waypoint("JournalAudioOrigin") + wp25 = ns.Waypoint("SecretAudioOrigin") + ns.GroupWander(gvar43) + ns.GroupWander(gvar44) + ns.GroupWander(gvar45) + obj46 = ns.Object("Osborn") + obj48 = ns.Object("Specs") + obj49 = ns.Object("BatGuide") + ns.StoryPic(obj6, "Warrior8Pic") + ns.SetDialog(obj6, ns.NORMAL, DunMirGuard1TalkStart, DunMirGuard1TalkEnd) + ns.StoryPic(obj7, "Warrior9Pic") + ns.SetDialog(obj7, ns.NORMAL, DunMirGuard2TalkStart, DunMirGuard2TalkEnd) + ns.StoryPic(obj8, "WizardGuard1Pic") + ns.SetDialog(obj8, ns.NORMAL, GalavaGuard1TalkStart, GalavaGuard1TalkEnd) + ns.StoryPic(obj9, "WizardGuard2Pic") + ns.SetDialog(obj9, ns.NORMAL, GalavaGuard2TalkStart, GalavaGuard2TalkEnd) + ns.StoryPic(obj14, "Townsman2Pic") + ns.SetDialog(obj14, ns.NORMAL, MineGuardDialogStart, MineGuardDialogEnd) + ns.StoryPic(obj21, "AirshipCaptainPic") + ns.SetDialog(obj21, ns.NEXT, CaptainDialogStart, CaptainDialogEnd) + ns.StoryPic(obj46, "OsbornPic") + ns.SetDialog(obj46, ns.NORMAL, HermitTalkStart, HermitTalkEnd) + ns.StoryPic(obj15, "Townsman2Pic") + ns.SetDialog(obj15, ns.NORMAL, IxGuard1TalkStart, IxGuard1TalkEnd) + ns.StoryPic(obj16, "IxGuard2Pic") + ns.SetDialog(obj16, ns.NORMAL, IxGuard2TalkStart, IxGuard2TalkEnd) + InitializeRobbery() + ns.FrameTimer(2, OwnDudes) + InitializeWaspNest() + InitializeMusicStuff() + PlayOutdoorMusic() + ns.StartupScreen(3) + ns.FrameTimer(15, MineJournalEntry) +} +func SpecsFound() { + ns.MoveWaypoint(wp24, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.JournalEntryAdd, wp24) + ns.PrintToAll("thing.db:SpectaclesDescription") +} +func WaspIdle() { + ns.CreatureGroupIdle(gvar44) +} +func SecretArea1() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 20) +} +func MapEntry() { + ns.UnBlind() + if ns.GetQuestStatus("Con03B:BeatMine") != 1 { + goto LABEL1 + } + gvar31 = 4 + ns.MoveObject(obj21, ns.GetWaypointX(wp55), ns.GetWaypointY(wp55)) + ns.ObjectOn(obj21) + ns.CreatureGuard(obj21, ns.GetWaypointX(wp55), ns.GetWaypointY(wp55), ns.GetWaypointX(wp56), ns.GetWaypointY(wp56), 10) + ns.MoveObject(obj22, ns.GetWaypointX(wp57), ns.GetWaypointY(wp57)) + ns.MoveObject(obj23, ns.GetWaypointX(wp58), ns.GetWaypointY(wp58)) + ns.CancelDialog(obj8) + ns.CancelDialog(obj9) + ns.CancelDialog(obj15) + ns.CancelDialog(obj16) + ns.CancelDialog(obj7) +LABEL1: + return +} +func CheckForBoots() { + if !ns.HasItem(ns.GetHost(), ns.Object("Con02a:BridgeGuardsBoots")) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.JournalEntry(ns.GetHost(), "ReturnBridgeGuardsBoots", 2) +LABEL1: + return +} +func yobutt() { + gvar31 = 4 + ns.MoveObject(obj21, 1851, 3388) + ns.ObjectOn(obj21) + ns.CreatureGuard(obj21, 1851, 3388, 1700, 3600, 10) + ns.MoveObject(obj22, ns.GetObjectX(obj22)+fvar4, ns.GetObjectY(obj22)+fvar5) + ns.MoveObject(obj23, ns.GetObjectX(obj23)+fvar4, ns.GetObjectY(obj23)+fvar5) +} +func PlayerDeath() { + ns.DeathScreen(3) +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func ToggleBanditMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !ns.IsObjectOn(obj59) { + goto LABEL2 + } + ns.ObjectOff(obj59) + ns.ObjectGroupOn(gvar60) + ns.Music(5, 100) + goto LABEL1 +LABEL2: + ns.ObjectOn(obj59) + ns.ObjectGroupOff(gvar60) + ns.Music(21, 100) +LABEL1: + return +} +func RobberRecognize() { + if !(ns.IsCaller(ns.GetHost()) && flag63) { + goto LABEL1 + } + flag63 = false + ns.Attack(ns.GetTrigger(), ns.GetHost()) + ns.Chat(ns.GetTrigger(), "War01A.scr:Bully1") +LABEL1: + return +} +func RobberDie() { + ns.DestroyEveryChat() + ns.ObjectGroupOff(gvar62) +} +func CancelRobbery() { + flag63 = false + ns.ObjectGroupOff(gvar62) +} +func SecretSFX() { + ns.MoveWaypoint(wp25, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp25) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func Secret02Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func Wasp01FollowPath() { + ns.Move(obj26, wp28) + ns.AggressionLevel(obj26, 0.83) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con03a/dummy_test.go b/examples/con03a/dummy_test.go new file mode 100644 index 0000000..81fd891 --- /dev/null +++ b/examples/con03a/dummy_test.go @@ -0,0 +1,6 @@ +package con03a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con03b/con03b.go b/examples/con03b/con03b.go new file mode 100644 index 0000000..3c10b56 --- /dev/null +++ b/examples/con03b/con03b.go @@ -0,0 +1,1574 @@ +package con03b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + ivar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + ivar21 int + ivar22 int + wp23 ns.WaypointID + wp24 ns.WaypointID + wp25 ns.WaypointID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + obj29 ns.ObjectID + gvar30 ns.WallGroupID + gvar31 ns.WallGroupID + gvar32 ns.WallGroupID + gvar33 ns.WallID + gvar34 ns.WallID + gvar35 ns.WallID + gvar36 ns.WallID + gvar37 ns.WallID + gvar38 ns.WallID + gvar39 ns.WallID + gvar40 ns.WallID + gvar41 ns.WallID + gvar42 ns.WallID + gvar43 ns.WallID + gvar44 ns.WallID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + gvar74 int + obj75 ns.ObjectID + gvar76 int + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + obj80 ns.ObjectID + gvar81 int + gvar82 int + gvar83 int + wp84 ns.WaypointID + wp85 [24]ns.WaypointID + wp86 [7]ns.WaypointID + wp87 [4]ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + wp90 ns.WaypointID + wp91 ns.WaypointID + wp92 ns.WaypointID + wp93 ns.WaypointID + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + wp97 ns.WaypointID + wp98 ns.WaypointID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + obj103 ns.ObjectID + obj104 ns.ObjectID + obj105 ns.ObjectID + obj106 ns.ObjectID + obj107 ns.ObjectID + obj108 ns.ObjectID + obj109 ns.ObjectID + obj110 ns.ObjectID + obj111 ns.ObjectID + gvar112 ns.ObjectGroupID + gvar113 ns.ObjectGroupID + gvar114 ns.ObjectGroupID + gvar115 ns.ObjectGroupID + gvar116 ns.ObjectGroupID + obj117 ns.ObjectID + obj118 ns.ObjectID + obj119 ns.ObjectID + obj120 ns.ObjectID + wp121 ns.WaypointID + obj122 ns.ObjectID + obj123 ns.ObjectID + obj124 ns.ObjectID + obj125 ns.ObjectID + gvar126 int + gvar127 int + gvar128 int + gvar129 int + gvar130 int +) + +func init() { + ivar22 = 0 + gvar81 = 1 + ivar21 = 0 + ivar15 = 1 + gvar16 = 0 + gvar17 = 0 + gvar18 = 0 + gvar19 = 0 + gvar20 = 0 + gvar83 = 0 + gvar127 = 0 + gvar128 = 0 + gvar129 = 0 + gvar130 = 0 +} +func Worker1Start() { + ns.ObjectOn(obj99) + ns.Move(obj4, wp94) + ns.Chat(obj4, "Con03B.scr:Worker1ChatA") +} +func TopFloorCleared() { + ns.ObjectOn(ns.Object("Worker1Unlock")) + ns.Chat(obj4, "Con03B.scr:Worker1ChatE") + ns.Move(obj4, wp97) + ivar15 = 6 +} +func GiveHint1() { + ns.PrintToAll("Con03.scr:Hint1") + ns.JournalEntry(ns.GetHost(), "Con03Hint1", 8) +} +func Worker1DialogStart() { + var v0 int + ns.LookAtObject(obj4, ns.GetHost()) + ns.DestroyEveryChat() + v0 = ivar15 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + if v0 == 6 { + goto LABEL6 + } + if v0 == 7 { + goto LABEL7 + } + goto LABEL8 +LABEL1: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1B") + goto LABEL9 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1C") + goto LABEL9 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1D") + goto LABEL9 +LABEL4: + if ivar21 != 0 { + goto LABEL10 + } + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1Gi") +LABEL10: + if ivar21 != 1 { + goto LABEL11 + } + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1Gii") +LABEL11: + if ivar21 != 2 { + goto LABEL12 + } + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1Giii") +LABEL12: + goto LABEL9 +LABEL5: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1Hi") + goto LABEL9 +LABEL6: + if ivar21 != 3 { + goto LABEL13 + } + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1Ii") +LABEL13: + if ivar21 != 4 { + goto LABEL14 + } + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1Iii") +LABEL14: + goto LABEL9 +LABEL7: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:Worker1Ji") + goto LABEL9 +LABEL8: + goto LABEL9 +LABEL9: + return +} +func Worker1DialogEnd() { + var v0 int + v0 = ivar15 + if v0 == 1 { + goto LABEL1 + } + if v0 == 5 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Frozen(ns.GetHost(), false) + ns.FrameTimer(2, Worker1Start) + ns.Pickup(ns.GetHost(), obj10) + ns.PrintToAll("Con03B.scr:GotKey") + ivar22 += 1 + ns.CancelDialog(obj4) + goto LABEL4 +LABEL2: + ns.FrameTimer(2, TopFloorCleared) + ns.Pickup(ns.GetHost(), obj14) + ns.PrintToAll("Con03B.scr:GotKey") + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func Worker2DialogStart() { + var v0 int + ns.LookAtObject(obj5, ns.GetHost()) + ns.DestroyEveryChat() + v0 = gvar16 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + if !(ivar22 <= 2) { + goto LABEL6 + } + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkAKey") + goto LABEL7 +LABEL6: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") +LABEL7: + goto LABEL8 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") + goto LABEL8 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkB") + goto LABEL8 +LABEL4: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkC") + goto LABEL8 +LABEL5: + goto LABEL8 +LABEL8: + return +} +func Worker2DialogEnd() { + var v0 int + v0 = gvar16 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Frozen(ns.GetHost(), false) + ns.CreatureFollow(obj5, ns.GetHost()) + if !(ivar22 <= 2) { + goto LABEL4 + } + ns.Pickup(ns.GetHost(), obj11) + ns.PrintToAll("Con03B.scr:GotKey") + ivar22 += 1 +LABEL4: + gvar16 = 1 + if ivar21 != 0 { + goto LABEL5 + } + ns.FrameTimer(300, GiveHint1) +LABEL5: + ns.CancelDialog(obj5) + goto LABEL6 +LABEL2: + ns.CreatureFollow(obj5, ns.GetHost()) + goto LABEL6 +LABEL3: + goto LABEL6 +LABEL6: + return +} +func Worker3DialogStart() { + var v0 int + ns.LookAtObject(obj6, ns.GetHost()) + ns.DestroyEveryChat() + v0 = gvar17 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + if !(ivar22 <= 2) { + goto LABEL6 + } + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkAKey") + goto LABEL7 +LABEL6: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") +LABEL7: + goto LABEL8 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") + goto LABEL8 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkB") + goto LABEL8 +LABEL4: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkC") + goto LABEL8 +LABEL5: + goto LABEL8 +LABEL8: + return +} +func Worker3DialogEnd() { + var v0 int + v0 = gvar17 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Frozen(ns.GetHost(), false) + ns.CreatureFollow(obj6, ns.GetHost()) + if !(ivar22 <= 2) { + goto LABEL4 + } + ns.Pickup(ns.GetHost(), obj12) + ns.PrintToAll("Con03B.scr:GotKey") + ivar22 += 1 +LABEL4: + gvar17 = 1 + if ivar21 != 0 { + goto LABEL5 + } + ns.FrameTimer(300, GiveHint1) +LABEL5: + ns.CancelDialog(obj6) + goto LABEL6 +LABEL2: + ns.CreatureFollow(obj6, ns.GetHost()) + goto LABEL6 +LABEL3: + goto LABEL6 +LABEL6: + return +} +func Worker4DialogStart() { + var v0 int + ns.LookAtObject(obj7, ns.GetHost()) + ns.DestroyEveryChat() + v0 = gvar18 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") + goto LABEL6 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") + goto LABEL6 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkB") + goto LABEL6 +LABEL4: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkC") + goto LABEL6 +LABEL5: + goto LABEL6 +LABEL6: + return +} +func Worker4DialogEnd() { + var v0 int + v0 = gvar18 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Frozen(ns.GetHost(), false) + ns.CreatureFollow(obj7, ns.GetHost()) + gvar18 = 1 + ns.CancelDialog(obj7) + goto LABEL4 +LABEL2: + ns.CreatureFollow(obj7, ns.GetHost()) + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func Worker5DialogStart() { + var v0 int + ns.LookAtObject(obj8, ns.GetHost()) + ns.DestroyEveryChat() + v0 = gvar19 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") + goto LABEL6 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") + goto LABEL6 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkB") + goto LABEL6 +LABEL4: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkC") + goto LABEL6 +LABEL5: + goto LABEL6 +LABEL6: + return +} +func Worker5DialogEnd() { + var v0 int + v0 = gvar19 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Frozen(ns.GetHost(), false) + ns.CreatureFollow(obj8, ns.GetHost()) + gvar19 = 1 + ns.CancelDialog(obj8) + goto LABEL4 +LABEL2: + ns.CreatureFollow(obj8, ns.GetHost()) + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func Worker6DialogStart() { + var v0 int + ns.LookAtObject(obj9, ns.GetHost()) + ns.DestroyEveryChat() + v0 = gvar20 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + if !(ivar22 <= 2) { + goto LABEL6 + } + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkAKey") + goto LABEL7 +LABEL6: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") +LABEL7: + goto LABEL8 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkA") + goto LABEL8 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkB") + goto LABEL8 +LABEL4: + ns.TellStory(ns.DemonRecognize, "Con03B.scr:WorkersTalkC") + goto LABEL8 +LABEL5: + goto LABEL8 +LABEL8: + return +} +func Worker6DialogEnd() { + var v0 int + v0 = gvar20 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Frozen(ns.GetHost(), false) + ns.CreatureFollow(obj9, ns.GetHost()) + if !(ivar22 <= 2) { + goto LABEL4 + } + ns.Pickup(ns.GetHost(), obj13) + ns.PrintToAll("Con03B.scr:GotKey") + ivar22 += 1 +LABEL4: + gvar20 = 1 + if ivar21 != 0 { + goto LABEL5 + } + ns.FrameTimer(300, GiveHint1) +LABEL5: + ns.CancelDialog(obj9) + goto LABEL6 +LABEL2: + ns.CreatureFollow(obj9, ns.GetHost()) + goto LABEL6 +LABEL3: + goto LABEL6 +LABEL6: + return +} +func WallOpen2() { + ns.ObjectGroupOn(ns.ObjectGroup("Walls2Spiders")) + ns.ObjectGroupOff(ns.ObjectGroup("Walls2Triggers")) + ns.WallGroupOpen(gvar31) + ns.WallBreak(gvar35) + ns.WallBreak(gvar36) + ns.WallBreak(gvar37) + ns.WallBreak(gvar38) + ns.WallBreak(gvar39) + ns.WallBreak(gvar40) + ns.WallBreak(gvar41) + ns.WallBreak(gvar42) + ns.WallBreak(gvar43) + ns.WallBreak(gvar44) +} +func WallOpen3() { + ns.WallGroupOpen(gvar32) +} +func WallClose3() { + ns.WallGroupClose(gvar32) +} +func ToggleElevator1() { + ns.ObjectToggle(obj46) + ns.ObjectToggle(obj47) + ns.ObjectToggle(obj48) + ns.ObjectToggle(obj49) + ns.ObjectToggle(obj50) + ns.ObjectToggle(obj51) + ns.ObjectToggle(obj52) + ns.ObjectToggle(obj53) + ns.ObjectToggle(obj54) + if !ns.IsObjectOn(obj46) { + goto LABEL1 + } + ns.AudioEvent(ns.Gear3, ns.Waypoint("ElevatorSFX")) +LABEL1: + return +} +func ToggleElevator2() { + ns.ObjectToggle(obj55) + ns.ObjectToggle(obj56) + ns.ObjectToggle(obj57) + ns.ObjectToggle(obj58) + ns.ObjectToggle(obj59) + ns.ObjectToggle(obj60) + ns.ObjectToggle(obj61) +} +func ToggleElevator3() { + ns.ObjectToggle(obj62) + ns.ObjectToggle(obj63) + ns.ObjectToggle(obj64) + ns.ObjectToggle(obj65) + ns.ObjectToggle(obj66) + ns.ObjectToggle(obj67) + ns.ObjectToggle(obj68) +} +func SetupElevators() { + if ns.GetElevatorStatus(obj47) != 2 { + goto LABEL1 + } + ns.ObjectOff(obj46) + ns.ObjectOff(obj47) + ns.ObjectOff(obj55) + ns.ObjectOff(obj56) + ns.ObjectOff(obj62) + ns.ObjectOff(obj63) + goto LABEL2 +LABEL1: + ns.FrameTimer(5, SetupElevators) +LABEL2: + return +} +func RunAway1() { + if !ns.HasClass(ns.GetCaller(), ns.MONSTER) { + goto LABEL1 + } + if !ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.Move(ns.GetCaller(), wp23) +LABEL1: + return +} +func RunAway2() { + if !ns.HasClass(ns.GetCaller(), ns.MONSTER) { + goto LABEL1 + } + if ns.IsOwnedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.Move(ns.GetCaller(), wp24) +LABEL1: + return +} +func RunAway3() { + if !ns.HasClass(ns.GetCaller(), ns.MONSTER) { + goto LABEL1 + } + if ns.IsOwnedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.Move(ns.GetCaller(), wp25) +LABEL1: + return +} +func RunAway4() { + if !ns.HasClass(ns.GetCaller(), ns.MONSTER) { + goto LABEL1 + } + if ns.IsOwnedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.Move(ns.GetCaller(), wp26) +LABEL1: + return +} +func RunAway5() { + if !ns.HasClass(ns.GetCaller(), ns.MONSTER) { + goto LABEL1 + } + if ns.IsOwnedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.Move(ns.GetCaller(), wp27) +LABEL1: + return +} +func RunAway6() { + if !ns.HasClass(ns.GetCaller(), ns.MONSTER) { + goto LABEL1 + } + if ns.IsOwnedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.Move(ns.GetCaller(), wp28) +LABEL1: + return +} +func ForemanDialogStart() { + var v0 int + v0 = gvar81 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + if v0 == 6 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.TellStory(ns.DemonRecognize, "Con03C.scr:ForemanA") + goto LABEL8 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con03C.scr:ForemanB") + goto LABEL8 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con03C.scr:ForemanC") + goto LABEL8 +LABEL4: + ns.TellStory(ns.DemonRecognize, "Con03C.scr:ForemanD") + goto LABEL8 +LABEL5: + ns.TellStory(ns.DemonRecognize, "Con03C.scr:ForemanE") + goto LABEL8 +LABEL6: + ns.TellStory(ns.DemonRecognize, "Con03C.scr:ForemanF") + goto LABEL8 +LABEL7: + goto LABEL8 +LABEL8: + return +} +func ForemanDialogEnd() { + var v0 int + v0 = gvar81 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + if v0 == 6 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.JournalEdit(ns.GetHost(), "LocateMineForeman", 4) + ns.PrintToAll("Con03C.scr:TaskComplete") + ns.JournalEntry(ns.GetHost(), "Con03RescueMineWorkers", 2) + ns.PrintToAll("Con03C.scr:NewTask") + ns.Pickup(ns.GetHost(), obj78) + ns.Pickup(ns.GetHost(), obj79) + ns.Pickup(ns.GetHost(), obj80) + ns.PrintToAll("GeneralPrint:GainedKey") + gvar81 = 2 + goto LABEL8 +LABEL2: + gvar81 = 3 + goto LABEL8 +LABEL3: + gvar81 = 2 + goto LABEL8 +LABEL4: + ns.JournalEntry(ns.GetHost(), "Con03FindAirshipCap", 2) + ns.PrintToAll("Con03C.scr:NewTask") + ns.Pickup(ns.GetHost(), obj77) + gvar81 = 5 + goto LABEL8 +LABEL5: + gvar81 = 6 + goto LABEL8 +LABEL6: + gvar81 = 5 + goto LABEL8 +LABEL7: + goto LABEL8 +LABEL8: + return +} +func InitializeForeman() { + obj75 = ns.Object("Foreman") + obj77 = ns.Object("Gold500") + obj78 = ns.Object("BlueKey") + obj79 = ns.Object("EntranceKey") + obj80 = ns.Object("ImpBeast") + ns.SetOwner(ns.GetHost(), obj75) + ns.StoryPic(obj75, "Townsman4Pic") + ns.SetDialog(obj75, ns.NORMAL, ForemanDialogStart, ForemanDialogEnd) +} +func PlayOutdoorMusic() { + ns.Music(21, 100) +} +func SetupWorkers() { + ns.SetOwner(ns.GetHost(), obj4) + ns.SetOwner(ns.GetHost(), obj5) + ns.SetOwner(ns.GetHost(), obj6) + ns.SetOwner(ns.GetHost(), obj7) + ns.SetOwner(ns.GetHost(), obj8) + ns.SetOwner(ns.GetHost(), obj9) + ns.LockDoor(obj100) + ns.LockDoor(obj101) + ns.Damage(obj102, 0, 1000, 0) + ns.Damage(obj103, 0, 1000, 0) + ns.Damage(obj104, 0, 1000, 0) +} +func MapInitialize() { + wp84 = ns.Waypoint("SecretAudioOrigin") + wp23 = ns.Waypoint("RunAwayTo1") + wp24 = ns.Waypoint("RunAwayTo2") + wp25 = ns.Waypoint("RunAwayTo3") + wp26 = ns.Waypoint("RunAwayTo4") + wp27 = ns.Waypoint("RunAwayTo5") + wp28 = ns.Waypoint("RunAwayTo6") + wp86[0] = ns.Waypoint("CreateBat1") + wp86[1] = ns.Waypoint("CreateBat2") + wp86[2] = ns.Waypoint("CreateBat3") + wp86[3] = ns.Waypoint("CreateBat4") + wp86[4] = ns.Waypoint("CreateBat5") + wp86[5] = ns.Waypoint("CreateBat6") + wp86[6] = ns.Waypoint("CreateBat7") + wp87[0] = ns.Waypoint("CreateImp1") + wp87[1] = ns.Waypoint("CreateImp2") + wp87[2] = ns.Waypoint("CreateImp3") + wp87[3] = ns.Waypoint("CreateImp4") + wp85[0] = ns.Waypoint("CreateSmSpider1") + wp85[1] = ns.Waypoint("CreateSmSpider2") + wp85[2] = ns.Waypoint("CreateSmSpider3") + wp85[3] = ns.Waypoint("CreateSmSpider4") + wp85[4] = ns.Waypoint("CreateSmSpider5") + wp85[5] = ns.Waypoint("CreateSmSpider6") + wp85[6] = ns.Waypoint("CreateSmSpider7") + wp85[7] = ns.Waypoint("CreateSmSpider8") + wp85[8] = ns.Waypoint("CreateSmSpider9") + wp85[9] = ns.Waypoint("CreateSmSpider10") + wp85[10] = ns.Waypoint("CreateSmSpider11") + wp85[11] = ns.Waypoint("CreateSmSpider12") + wp85[12] = ns.Waypoint("CreateSmSpider13") + wp85[13] = ns.Waypoint("CreateSmSpider14") + wp85[14] = ns.Waypoint("CreateSmSpider15") + wp85[15] = ns.Waypoint("CreateSmSpider16") + wp85[16] = ns.Waypoint("CreateSmSpider17") + wp85[17] = ns.Waypoint("CreateSmSpider18") + wp85[18] = ns.Waypoint("CreateSmSpider19") + wp85[19] = ns.Waypoint("CreateSmSpider20") + wp85[20] = ns.Waypoint("CreateSmSpider21") + wp85[21] = ns.Waypoint("CreateSmSpider22") + wp85[22] = ns.Waypoint("CreateSmSpider23") + wp85[23] = ns.Waypoint("CreateSmSpider24") + wp88 = ns.Waypoint("WorkerEnd1") + wp89 = ns.Waypoint("WorkerEnd2") + wp90 = ns.Waypoint("WorkerEnd3") + wp91 = ns.Waypoint("WorkerEnd4") + wp92 = ns.Waypoint("WorkerEnd5") + wp93 = ns.Waypoint("WorkerEnd6") + obj102 = ns.Object("DeadGuy1") + obj103 = ns.Object("DeadGuy2") + obj104 = ns.Object("DeadGuy3") + obj105 = ns.Object("StubbornDeadGuy") + ns.Damage(obj105, 0, 1000, 0) + wp94 = ns.Waypoint("Button2Push") + wp95 = ns.Waypoint("Elevator2Down") + wp96 = ns.Waypoint("Worker1Wait") + wp97 = ns.Waypoint("LevelGateUnlock") + wp98 = ns.Waypoint("Worker1Elevator3") + obj99 = ns.Object("ToggleElevator2Button") + obj100 = ns.Object("LevelGateA") + obj101 = ns.Object("LevelGateB") + obj106 = ns.Object("Worker1Down") + gvar30 = ns.WallGroup("Walls1") + gvar31 = ns.WallGroup("Walls2") + gvar32 = ns.WallGroup("Walls3") + gvar33 = ns.Wall(164, 92) + gvar34 = ns.Wall(165, 93) + gvar35 = ns.Wall(19, 111) + gvar36 = ns.Wall(20, 112) + gvar37 = ns.Wall(28, 110) + gvar38 = ns.Wall(29, 111) + gvar39 = ns.Wall(31, 111) + gvar40 = ns.Wall(33, 109) + gvar41 = ns.Wall(34, 108) + gvar42 = ns.Wall(36, 106) + gvar43 = ns.Wall(37, 105) + gvar44 = ns.Wall(38, 104) + obj45 = ns.Object("WallOpen1") + obj110 = ns.Object("WallOpen2A") + obj111 = ns.Object("WallOpen2B") + obj4 = ns.Object("Alex") + obj5 = ns.Object("Logan") + obj6 = ns.Object("Naldo") + obj7 = ns.Object("Garrit") + obj8 = ns.Object("Dudley") + obj9 = ns.Object("Claude") + obj10 = ns.Object("RedKey1") + obj11 = ns.Object("RedKey2") + obj12 = ns.Object("RedKey3") + obj13 = ns.Object("RedKey4") + obj14 = ns.Object("GoldKey") + gvar112 = ns.ObjectGroup("Worker1Rec") + gvar113 = ns.ObjectGroup("Worker2Rec") + gvar114 = ns.ObjectGroup("Worker3Rec") + gvar115 = ns.ObjectGroup("Worker5Rec") + gvar116 = ns.ObjectGroup("Worker6Rec") + obj117 = ns.Object("InitialDoor") + obj118 = ns.Object("FinalDoor") + obj119 = ns.Object("FinalDoor2A") + obj120 = ns.Object("FinalDoor2B") + wp121 = ns.Waypoint("FinalPosition") + obj122 = ns.Object("HuntImp1") + obj123 = ns.Object("HuntImp2") + obj124 = ns.Object("HuntImp3") + obj125 = ns.Object("HuntImp4") + obj29 = ns.Object("Scorpion1") + obj46 = ns.Object("Elevator1a") + obj47 = ns.Object("Elevator1b") + obj48 = ns.Object("Gear1a") + obj49 = ns.Object("Gear1b") + obj50 = ns.Object("Gear1c") + obj51 = ns.Object("Gear1d") + obj52 = ns.Object("Gear1e") + obj53 = ns.Object("Gear1f") + obj54 = ns.Object("Gear1g") + obj55 = ns.Object("Elevator2a") + obj56 = ns.Object("Elevator2b") + obj57 = ns.Object("Gear2a") + obj58 = ns.Object("Gear2b") + obj59 = ns.Object("Gear2c") + obj60 = ns.Object("Gear2d") + obj61 = ns.Object("Gear2e") + obj62 = ns.Object("Elevator3a") + obj63 = ns.Object("Elevator3b") + obj64 = ns.Object("Gear3a") + obj65 = ns.Object("Gear3b") + obj66 = ns.Object("Gear3c") + obj67 = ns.Object("Gear3d") + obj68 = ns.Object("Gear3e") + obj107 = ns.Object("Secret02Spider01") + obj108 = ns.Object("Secret02Spider02") + obj109 = ns.Object("Secret02Spider03") + obj69 = ns.Object("Urch1") + obj70 = ns.Object("Urch2") + obj71 = ns.Object("Urch3") + obj72 = ns.Object("Urch4") + obj73 = ns.Object("Urch5") + ns.StoryPic(obj4, "Miner1Pic") + ns.StoryPic(obj5, "Miner2Pic") + ns.StoryPic(obj6, "Miner2Pic") + ns.StoryPic(obj7, "Miner2Pic") + ns.StoryPic(obj8, "Miner2Pic") + ns.StoryPic(obj9, "Miner2Pic") + ns.SetDialog(obj4, ns.NORMAL, Worker1DialogStart, Worker1DialogEnd) + PlayOutdoorMusic() + SetupWorkers() + InitializeForeman() + ns.FrameTimer(40, SetupElevators) +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlayUndergroundMusic() { + ns.Music(18, 100) +} +func SecretSFX() { + ns.MoveWaypoint(wp84, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp84) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) + SecretSFX() +} +func Secret02Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 25) + ns.AggressionLevel(obj107, 0.83) + ns.AggressionLevel(obj108, 0.83) + ns.AggressionLevel(obj109, 0.83) + SecretSFX() +} +func MapShutdown() { + ns.NoWallSound(false) +} +func MapEntry() { + ns.NoWallSound(true) +} +func PlayerDeath() { + ns.DeathScreen(3) +} +func Worker1Rec() { + ns.ObjectGroupOff(gvar112) + ns.PrintToAll("Con03B.scr:Rescued1") + ns.GiveXp(ns.GetHost(), 250) + ns.ObjectOn(obj4) + ns.BecomePet(obj4) + ns.CreatureFollow(obj4, ns.GetHost()) + ns.Frozen(ns.GetHost(), true) + ns.StartDialog(obj4, ns.GetHost()) +} +func WorkerRescued() { + var v0 int + v0 = ivar21 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + if v0 == 4 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.PrintToAll("Con03B.scr:Rescued2") + goto LABEL7 +LABEL2: + ns.PrintToAll("Con03B.scr:Rescued3") + goto LABEL7 +LABEL3: + ns.PrintToAll("Con03B.scr:Rescued4") + goto LABEL7 +LABEL4: + ns.PrintToAll("Con03D.scr:Rescued5") + goto LABEL7 +LABEL5: + ns.PrintToAll("Con03D.scr:Rescued6") + goto LABEL7 +LABEL6: + goto LABEL7 +LABEL7: + return +} +func Worker2MoveIt() { + if gvar128 != 0 { + goto LABEL1 + } + ns.Move(obj5, wp89) + ns.FrameTimer(30, Worker2MoveIt) +LABEL1: + return +} +func Worker3MoveIt() { + if gvar129 != 0 { + goto LABEL1 + } + ns.Move(obj6, wp90) + ns.FrameTimer(30, Worker3MoveIt) +LABEL1: + return +} +func Worker6MoveIt() { + if gvar130 != 0 { + goto LABEL1 + } + ns.Move(obj9, wp93) + ns.FrameTimer(30, Worker6MoveIt) +LABEL1: + return +} +func AllFound() { + ns.JournalEdit(ns.GetHost(), "Con03RescueMineWorkers", 4) + ns.MoveWaypoint(wp84, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagDrop, wp84) + ns.PrintToAll("Con03C.scr:TaskComplete") + ns.GiveXp(ns.GetHost(), 500) + ns.SetQuestStatus(1, "BeatMine") + gvar81 = 4 + ivar15 = 7 + gvar16 = 3 + gvar17 = 3 + gvar18 = 3 + gvar19 = 3 + gvar20 = 3 +} +func Worker1Reminder() { + if gvar127 != 1 { + goto LABEL1 + } + ns.Move(obj4, wp95) +LABEL1: + return +} +func Worker1Movement() { + var v0 int + if !ns.IsCaller(obj4) { + goto LABEL1 + } + v0 = gvar127 + if v0 == 0 { + goto LABEL2 + } + if v0 == 1 { + goto LABEL3 + } + if v0 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Move(obj4, wp95) + ns.Chat(obj4, "Con03B.scr:Worker1ChatB") + gvar127 = 1 + goto LABEL1 +LABEL3: + if gvar83 != 0 { + goto LABEL6 + } + ns.Move(obj4, wp96) + ns.ObjectOff(obj106) + gvar127 = 2 + goto LABEL7 +LABEL6: + ns.Chat(obj4, "Con03B.scr:Worker1ChatC") + ivar15 = 2 + ns.CreatureGuard(obj4, ns.GetWaypointX(wp88), ns.GetWaypointY(wp88), ns.GetWaypointX(wp92), ns.GetWaypointY(wp92), 0) +LABEL7: + goto LABEL1 +LABEL4: + goto LABEL1 +LABEL5: + goto LABEL1 +LABEL1: + return +} +func BobDown() { + gvar83 = 1 + if gvar127 != 2 { + goto LABEL1 + } + ns.Chat(obj4, "Con03B.scr:Worker1ChatC") + ivar15 = 2 + ns.CreatureGuard(obj4, ns.GetWaypointX(wp88), ns.GetWaypointY(wp88), ns.GetWaypointX(wp92), ns.GetWaypointY(wp92), 0) +LABEL1: + return +} +func BobUp() { + gvar83 = 0 +} +func Worker1Stop() { + if !ns.IsCaller(obj4) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Chat(obj4, "Con03B.scr:Worker1ChatD") + if !(ivar15 < 5) { + goto LABEL2 + } + ivar15 = 3 +LABEL2: + ns.SetDialog(obj4, ns.NORMAL, Worker1DialogStart, Worker1DialogEnd) +LABEL1: + return +} +func Worker1Unlock() { + if !ns.IsCaller(obj4) { + goto LABEL1 + } + ns.UnlockDoor(obj100) + ns.UnlockDoor(obj101) + ns.Move(obj4, wp98) +LABEL1: + return +} +func Worker1Elevator3() { + ns.CreatureGuard(obj4, ns.GetWaypointX(wp88), ns.GetWaypointY(wp88), ns.GetWaypointX(wp92), ns.GetWaypointY(wp92), 0) +} +func Worker1Filter() int { + if !ns.IsCaller(obj4) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func Worker2Rec() { + ns.ObjectGroupOff(gvar113) + ns.GiveXp(ns.GetHost(), 100) + ns.ObjectOn(obj5) + ns.BecomePet(obj5) + ns.CreatureFollow(obj5, ns.GetHost()) + ns.CreateObject("SmallAlbinoSpider", wp85[0]) + ns.CreateObject("SmallAlbinoSpider", wp85[1]) + ns.CreateObject("SmallAlbinoSpider", wp85[2]) + ns.CreateObject("SmallAlbinoSpider", wp85[3]) + ns.CreateObject("SmallAlbinoSpider", wp85[4]) + ns.CreateObject("SmallAlbinoSpider", wp85[5]) + ns.CreateObject("SmallAlbinoSpider", wp85[6]) + ns.CreateObject("SmallAlbinoSpider", wp85[7]) + ns.CreateObject("SmallAlbinoSpider", wp85[8]) + ns.CreateObject("SmallAlbinoSpider", wp85[9]) + ns.CreateObject("SmallAlbinoSpider", wp85[10]) + ns.CreateObject("SmallAlbinoSpider", wp85[11]) + ns.CreateObject("SmallAlbinoSpider", wp85[12]) + ns.CreateObject("Imp", wp87[3]) + ns.Frozen(ns.GetHost(), true) + ns.SetDialog(obj5, ns.NORMAL, Worker2DialogStart, Worker2DialogEnd) + ns.StartDialog(obj5, ns.GetHost()) +} +func Worker2Return() { + if !ns.IsCaller(obj5) { + goto LABEL1 + } + ns.CreatureGuard(obj5, ns.GetWaypointX(wp89), ns.GetWaypointY(wp89), ns.GetWaypointX(wp90), ns.GetWaypointY(wp90), 0) + if gvar16 != 1 { + goto LABEL2 + } + ns.SetDialog(obj5, ns.NORMAL, Worker2DialogStart, Worker2DialogEnd) + WorkerRescued() + ns.GiveXp(ns.GetHost(), 250) + ns.Chat(obj5, "Con03B.scr:WorkersReturn") + ivar15 = 4 + ivar21 += 1 + if ivar21 != 3 { + goto LABEL2 + } + ivar15 = 5 +LABEL2: + gvar16 = 2 +LABEL1: + return +} +func Worker2Stop() { + if !ns.IsCaller(obj5) { + goto LABEL1 + } + gvar128 = 1 + ns.Chat(obj5, "Con03B.scr:WorkersStop") + ns.CreatureGuard(obj5, 1779, 2501, 1763, 2508, 60) +LABEL1: + return +} +func Worker2Filter() int { + if !ns.IsCaller(obj5) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func Worker3Rec() { + ns.ObjectGroupOff(gvar114) + ns.GiveXp(ns.GetHost(), 100) + ns.ObjectOn(obj6) + ns.BecomePet(obj6) + ns.CreatureFollow(obj6, ns.GetHost()) + ns.ObjectOn(obj110) + ns.ObjectOn(obj111) + ns.CreateObject("SmallAlbinoSpider", wp85[13]) + ns.CreateObject("SmallAlbinoSpider", wp85[14]) + ns.CreateObject("SmallAlbinoSpider", wp85[15]) + ns.CreateObject("SmallAlbinoSpider", wp85[16]) + ns.CreateObject("SmallAlbinoSpider", wp85[17]) + ns.CreateObject("SmallAlbinoSpider", wp85[18]) + ns.CreateObject("SmallAlbinoSpider", wp85[19]) + ns.CreateObject("SmallAlbinoSpider", wp85[20]) + ns.CreateObject("SmallAlbinoSpider", wp85[21]) + ns.CreateObject("SmallAlbinoSpider", wp85[22]) + ns.CreateObject("SmallAlbinoSpider", wp85[23]) + ns.CreateObject("Imp", wp87[0]) + ns.CreateObject("Imp", wp87[1]) + ns.CreateObject("Imp", wp87[2]) + ns.Frozen(ns.GetHost(), true) + ns.SetDialog(obj6, ns.NORMAL, Worker3DialogStart, Worker3DialogEnd) + ns.StartDialog(obj6, ns.GetHost()) +} +func Worker3Return() { + if !ns.IsCaller(obj6) { + goto LABEL1 + } + ns.CreatureGuard(obj6, ns.GetWaypointX(wp90), ns.GetWaypointY(wp90), ns.GetWaypointX(wp92), ns.GetWaypointY(wp92), 0) + if gvar17 != 1 { + goto LABEL2 + } + ns.SetDialog(obj6, ns.NORMAL, Worker3DialogStart, Worker3DialogEnd) + WorkerRescued() + ns.Chat(obj6, "Con03B.scr:WorkersReturn") + ns.GiveXp(ns.GetHost(), 250) + ivar15 = 4 + ivar21 += 1 + if ivar21 != 3 { + goto LABEL2 + } + ivar15 = 5 +LABEL2: + gvar17 = 2 +LABEL1: + return +} +func Worker3Stop() { + if !ns.IsCaller(obj6) { + goto LABEL1 + } + gvar129 = 1 + ns.Chat(obj6, "Con03B.scr:WorkersStop") + ns.CreatureGuard(obj6, 1790, 2347, 1788, 2330, 60) +LABEL1: + return +} +func Worker3Filter() int { + if !ns.IsCaller(obj6) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func Worker4Return() { + if !ns.IsCaller(obj7) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + if gvar18 != 1 { + goto LABEL1 + } + ns.SetDialog(obj7, ns.NORMAL, Worker4DialogStart, Worker4DialogEnd) + ns.CreatureGuard(obj7, ns.GetWaypointX(wp91), ns.GetWaypointY(wp91), ns.GetWaypointX(wp90), ns.GetWaypointY(wp90), 0) + WorkerRescued() + ns.GiveXp(ns.GetHost(), 250) + ns.Chat(obj7, "Con03B.scr:WorkersReturn") + ivar21 += 1 + if ivar21 != 5 { + goto LABEL2 + } + AllFound() + goto LABEL1 +LABEL2: + gvar18 = 2 +LABEL1: + return +} +func Worker5Return() { + if !ns.IsCaller(obj8) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + if gvar19 != 1 { + goto LABEL1 + } + ns.SetDialog(obj8, ns.NORMAL, Worker5DialogStart, Worker5DialogEnd) + ns.CreatureGuard(obj8, ns.GetWaypointX(wp92), ns.GetWaypointY(wp92), ns.GetWaypointX(wp90), ns.GetWaypointY(wp90), 0) + WorkerRescued() + ns.GiveXp(ns.GetHost(), 250) + ns.Chat(obj8, "Con03B.scr:WorkersReturn") + ivar21 += 1 + if ivar21 != 5 { + goto LABEL2 + } + AllFound() + goto LABEL1 +LABEL2: + gvar19 = 2 +LABEL1: + return +} +func Worker5Rec() { + var v0 ns.ObjectID + ns.ObjectGroupOff(gvar115) + ns.GiveXp(ns.GetHost(), 100) + ns.ObjectOn(obj8) + ns.BecomePet(obj8) + ns.CreatureFollow(obj8, ns.GetHost()) + ns.ObjectOn(obj7) + ns.BecomePet(obj7) + ns.CreatureFollow(obj7, ns.GetHost()) + v0 = ns.CreateObject("Imp", ns.Waypoint("CreateImp01")) + ns.LookAtObject(v0, ns.ObjectID(ns.Waypoint("Imp01Face"))) // FIXME + v0 = ns.CreateObject("Imp", ns.Waypoint("CreateImp02")) + ns.LookAtObject(v0, ns.ObjectID(ns.Waypoint("Imp02Face"))) // FIXME + v0 = ns.CreateObject("Imp", ns.Waypoint("CreateImp03")) + ns.LookAtObject(v0, ns.ObjectID(ns.Waypoint("Imp03Face"))) // FIXME + v0 = ns.CreateObject("Imp", ns.Waypoint("CreateImp04")) + ns.LookAtObject(v0, ns.ObjectID(ns.Waypoint("Imp04Face"))) // FIXME + v0 = ns.CreateObject("Imp", ns.Waypoint("CreateImp05")) + ns.LookAtObject(v0, ns.ObjectID(ns.Waypoint("Imp05Face"))) // FIXME + v0 = ns.CreateObject("Imp", ns.Waypoint("CreateImp06")) + ns.LookAtObject(v0, ns.ObjectID(ns.Waypoint("Imp06Face"))) // FIXME + v0 = ns.CreateObject("Imp", ns.Waypoint("CreateImp07")) + ns.LookAtObject(v0, ns.ObjectID(ns.Waypoint("Imp07Face"))) // FIXME + v0 = ns.CreateObject("Scorpion", ns.Waypoint("CreateScorpion01")) + ns.LookAtObject(v0, ns.ObjectID(ns.Waypoint("Scorpion01Face"))) // FIXME + ns.Frozen(ns.GetHost(), true) + ns.SetDialog(obj8, ns.NORMAL, Worker5DialogStart, Worker5DialogEnd) + gvar18 = 1 + ns.StartDialog(obj8, ns.GetHost()) +} +func Worker6Rec() { + ns.ObjectGroupOff(gvar116) + ns.GiveXp(ns.GetHost(), 100) + ns.ObjectOn(obj9) + ns.BecomePet(obj9) + ns.CreatureFollow(obj9, ns.GetHost()) + ns.CreateObject("Bat", wp86[0]) + ns.CreateObject("Bat", wp86[1]) + ns.CreateObject("Bat", wp86[2]) + ns.CreateObject("Bat", wp86[3]) + ns.CreateObject("Bat", wp86[4]) + ns.CreateObject("Bat", wp86[5]) + ns.CreateObject("Bat", wp86[6]) + ns.Frozen(ns.GetHost(), true) + ns.SetDialog(obj9, ns.NORMAL, Worker6DialogStart, Worker6DialogEnd) + ns.StartDialog(obj9, ns.GetHost()) +} +func Worker6Return() { + if !ns.IsCaller(obj9) { + goto LABEL1 + } + ns.CreatureGuard(obj9, ns.GetWaypointX(wp93), ns.GetWaypointY(wp93), ns.GetWaypointX(wp89), ns.GetWaypointY(wp89), 0) + if gvar20 != 1 { + goto LABEL2 + } + ns.SetDialog(obj9, ns.NORMAL, Worker6DialogStart, Worker6DialogEnd) + WorkerRescued() + ns.Chat(obj9, "Con03B.scr:WorkersReturn") + ns.GiveXp(ns.GetHost(), 250) + ivar21 += 1 + ivar15 = 4 + if ivar21 != 3 { + goto LABEL2 + } + ivar15 = 5 +LABEL2: + gvar20 = 2 +LABEL1: + return +} +func Worker6Stop() { + if !ns.IsCaller(obj9) { + goto LABEL1 + } + gvar130 = 1 + ns.Chat(obj9, "Con03B.scr:WorkersStop") + ns.CreatureGuard(obj9, 1906, 2465, 1907, 2447, 60) +LABEL1: + return +} +func Worker6Filter() int { + if !ns.IsCaller(obj9) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func WorkerDie() { + ns.DeathScreen(3) +} +func WorkerHurt() { + r0 := ns.Random(1, 2) + if r0 != 1 { + goto LABEL1 + } + ns.Chat(ns.GetTrigger(), "Con03B.scr:WorkerHurt") +LABEL1: + return +} +func WorkerEngage() { +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapShutdown": + MapShutdown() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con03b/dummy_test.go b/examples/con03b/dummy_test.go new file mode 100644 index 0000000..ea00744 --- /dev/null +++ b/examples/con03b/dummy_test.go @@ -0,0 +1,6 @@ +package con03b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con04a/con04a.go b/examples/con04a/con04a.go new file mode 100644 index 0000000..d7d51f8 --- /dev/null +++ b/examples/con04a/con04a.go @@ -0,0 +1,230 @@ +package con04a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + ivar4 int + ivar5 int + gvar6 int + fvar7 float32 + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + wp14 ns.WaypointID + wp15 ns.WaypointID + wp16 ns.WaypointID + wp17 ns.WaypointID + gvar18 int + gvar19 int + gvar20 int + gvar21 ns.ObjectGroupID + gvar22 ns.ObjectGroupID + obj23 ns.ObjectID + wp24 ns.WaypointID +) + +func init() { + ivar4 = 50 + ivar5 = 20 + gvar6 = 1 + fvar7 = 5 + gvar18 = 0 + gvar19 = 1 + gvar20 = gvar18 +} +func CloseBlockTrap01() { + ns.ObjectOff(obj12) + ns.Move(obj8, wp14) + ns.Move(obj9, wp15) + ns.FrameTimerWithArg(ivar5, 1, BlockTrapBoom) + ns.FrameTimerWithArg(ivar4, 1, ResetBlockTrap) +} +func CloseBlockTrap02() { + ns.ObjectOff(obj13) + ns.Move(obj10, wp16) + ns.Move(obj11, wp17) + ns.FrameTimerWithArg(ivar5, 2, BlockTrapBoom) + ns.FrameTimerWithArg(ivar4, 2, ResetBlockTrap) +} +func BlockTrapLoop() { + var v0 int + v0 = gvar6 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + CloseBlockTrap01() + gvar6 = 2 + goto LABEL3 +LABEL2: + CloseBlockTrap02() + gvar6 = 1 + goto LABEL3 +LABEL3: + ns.FrameTimer(30, BlockTrapLoop) +} +func InitializeBlockTrap() { + obj8 = ns.Object("SpikeBlock01") + obj9 = ns.Object("SpikeBlock02") + obj10 = ns.Object("SpikeBlock03") + obj11 = ns.Object("SpikeBlock04") + wp14 = ns.Waypoint("BlockWP01") + wp15 = ns.Waypoint("BlockWP02") + wp16 = ns.Waypoint("BlockWP03") + wp17 = ns.Waypoint("BlockWP04") + obj12 = ns.Object("BlockTrap01Trigger") + obj13 = ns.Object("BlockTrap02Trigger") + BlockTrapLoop() +} +func BlockTrapBoom(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.AudioEvent(ns.HammerMissing, wp14) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp14), ns.GetWaypointY(wp14), fvar7, 0) + goto LABEL3 +LABEL2: + ns.AudioEvent(ns.HammerMissing, wp16) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp16), ns.GetWaypointY(wp16), fvar7, 0) + goto LABEL3 +LABEL3: + return +} +func ResetBlockTrap(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.ObjectOn(obj12) + ns.AudioEvent(ns.TriggerReleased, wp14) + goto LABEL3 +LABEL2: + ns.ObjectOn(obj13) + ns.AudioEvent(ns.TriggerReleased, wp16) + goto LABEL3 +LABEL3: + return +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func CaptainDialogStart() { + var v0 int + v0 = gvar20 + if v0 == gvar18 { + goto LABEL1 + } + if v0 == gvar19 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con04a:CaptainGreet") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con04a:CaptainIdle") + goto LABEL3 +LABEL3: + return +} +func CaptainDialogEnd() { + var v0 int + v0 = gvar20 + if v0 == gvar18 { + goto LABEL1 + } + if v0 == gvar19 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.JournalEntry(ns.GetHost(), "Chapter4SearchCrypts", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.AwardSpell(ns.GetHost(), ns.SPELL_GLYPH) + ns.PrintToAll("GeneralPrint:Bomber") + ns.JournalEntry(ns.GetHost(), "BomberHint", 8) + gvar20 = gvar19 + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func StartCaptainConversation() { + ns.SetDialog(obj23, ns.NORMAL, CaptainDialogStart, CaptainDialogEnd) + ns.StartDialog(obj23, ns.GetHost()) +} +func PlayOutdoorMusic() { + ns.Music(22, 100) +} +func MapInitialize() { + gvar21 = ns.ObjectGroup("Secret2Triggers") + gvar22 = ns.ObjectGroup("Fish") + obj23 = ns.Object("Airship_Captain") + wp24 = ns.Waypoint("SecretAudioOrigin") + ns.StoryPic(obj23, "AirshipCaptainPic") + ns.SetOwner(ns.GetHost(), obj23) + ns.GroupWander(gvar22) + InitializeBlockTrap() + PlayOutdoorMusic() + ns.StartupScreen(4) + ns.FrameTimer(5, StartCaptainConversation) +} +func OpenSecretPassageWalls() { + ns.WallOpen(ns.Wall(129, 137)) +} +func ExitMessage() { + ns.PrintToAll("War04a:ExitMessage") +} +func PlayUndergroundMusic() { + ns.Music(20, 100) +} +func SecretSFX() { + ns.MoveWaypoint(wp24, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp24) +} +func FoundSecret1() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 25) + SecretSFX() +} +func FoundSecret2() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + ns.ObjectGroupOff(gvar21) + SecretSFX() +} +func FoundSecret3() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con04a/dummy_test.go b/examples/con04a/dummy_test.go new file mode 100644 index 0000000..9167dfe --- /dev/null +++ b/examples/con04a/dummy_test.go @@ -0,0 +1,6 @@ +package con04a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con04b/con04b.go b/examples/con04b/con04b.go new file mode 100644 index 0000000..98fc6db --- /dev/null +++ b/examples/con04b/con04b.go @@ -0,0 +1,768 @@ +package con04b + +import ( + "strconv" + + "github.com/noxworld-dev/noxscript/ns/v3" +) + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + flag16 bool + flag17 bool + flag18 bool + flag19 bool + flag20 bool + ivar21 int + ivar22 int + gvar23 int + gvar24 int + gvar25 int + obj26 [13]ns.ObjectID + obj27 [13]ns.ObjectID + ivar28 int + obj29 [56]ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + gvar41 int + gvar42 int + gvar43 int + obj44 ns.ObjectID + obj45 ns.ObjectID + gvar46 ns.ObjectGroupID + gvar47 ns.WallGroupID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 [56]ns.WaypointID + wp54 ns.WaypointID + gvar55 ns.WaypointGroupID + gvar56 ns.WaypointGroupID + gvar57 ns.WaypointGroupID +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 0 + gvar9 = 1 + gvar10 = 2 + gvar11 = 3 + gvar12 = 4 + gvar13 = 5 + gvar14 = 6 + gvar15 = 7 + flag16 = false + flag17 = true + flag18 = false + flag19 = false + flag20 = false + ivar21 = 0 + ivar22 = 0 + gvar23 = gvar9 + gvar24 = 0 + gvar25 = gvar4 + ivar28 = 120 +} +func setUpFlameLever() { + if !flag16 { + goto LABEL1 + } + return +LABEL1: + flag16 = true + gvar23 = gvar9 + ivar22 = 2 + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL2 + } + obj29[ivar21] = 0 + ivar21 += 1 + } +LABEL2: + ns.FrameTimer(3, flameLever) +} +func flameLever() { + var v0 int + if !flag16 { + goto LABEL1 + } + v0 = gvar23 + if v0 == gvar9 { + goto LABEL2 + } + if v0 == gvar10 { + goto LABEL3 + } + if v0 == gvar11 { + goto LABEL4 + } + if v0 == gvar12 { + goto LABEL5 + } + if v0 == gvar13 { + goto LABEL6 + } + if v0 == gvar14 { + goto LABEL7 + } + if v0 == gvar15 { + goto LABEL8 + } + if v0 == gvar8 { + goto LABEL9 + } + goto LABEL10 +LABEL2: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL11 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("SmallFlame", wp53[ivar21]) + ivar21 += 1 + } +LABEL11: + gvar23 = gvar10 + ns.AudioEvent(ns.FireballCast, wp51) + ns.AudioEvent(ns.FireballCast, wp52) + ivar22 = 2 + goto LABEL10 +LABEL3: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL13 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("MediumFlame", wp53[ivar21]) + ivar21 += 1 + } +LABEL13: + gvar23 = gvar11 + ns.AudioEvent(ns.DemonBreath, wp51) + ns.AudioEvent(ns.DemonBreath, wp52) + ivar22 = 2 + goto LABEL10 +LABEL4: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL15 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("Flame", wp53[ivar21]) + ivar21 += 1 + } +LABEL15: + gvar23 = gvar12 + ivar22 = 2 + goto LABEL10 +LABEL5: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL17 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("LargeFlame", wp53[ivar21]) + ivar21 += 1 + } +LABEL17: + gvar23 = gvar13 + ivar22 = 150 + goto LABEL10 +LABEL6: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL19 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("Flame", wp53[ivar21]) + ivar21 += 1 + } +LABEL19: + gvar23 = gvar14 + ivar22 = 2 + goto LABEL10 +LABEL7: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL21 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("MediumFlame", wp53[ivar21]) + ivar21 += 1 + } +LABEL21: + gvar23 = gvar15 + ns.AudioEvent(ns.FireExtinguish, wp51) + ns.AudioEvent(ns.FireExtinguish, wp52) + ivar22 = 2 + goto LABEL10 +LABEL8: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL23 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("SmallFlame", wp53[ivar21]) + ivar21 += 1 + } +LABEL23: + gvar23 = gvar8 + ivar22 = 2 + goto LABEL10 +LABEL9: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL25 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = 0 + ivar21 += 1 + } +LABEL25: + gvar23 = gvar9 + flag16 = false + goto LABEL10 +LABEL10: + ns.FrameTimer(ivar22, flameLever) +LABEL1: + return +} +func skullHallOn() { + if !flag17 { + goto LABEL1 + } + ns.CastSpellLocationLocation(ns.SPELL_FIREBALL, 3012, 2229, 3185, 2403) + ns.CastSpellLocationLocation(ns.SPELL_FIREBALL, 2896, 2346, 3070, 2517) + ns.FrameTimer(60, skullHallOn) +LABEL1: + return +} +func skullHallOff() { + flag17 = false +} +func Zombie1Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj38) + v1 = ns.GetObjectY(obj38) + ns.RaiseZombie(obj38) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj30, obj38) +} +func Zombie2Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj39) + v1 = ns.GetObjectY(obj39) + ns.RaiseZombie(obj39) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj30, obj39) +} +func Zombie3Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj40) + v1 = ns.GetObjectY(obj40) + ns.RaiseZombie(obj40) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj30, obj40) +} +func ZombieAttackHecubah() { + ns.WayPointGroupOn(gvar56) + ns.WayPointGroupOff(gvar55) + ns.HitLocation(obj38, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) + ns.HitLocation(obj39, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) + ns.HitLocation(obj40, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) +} +func HecubahShootZombie1() { + ns.LookAtObject(obj30, obj38) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj30, obj38) + ns.FrameTimer(30, HecubahShootZombie2) +} +func HecubahShootZombie2() { + ns.LookAtObject(obj30, obj39) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj30, obj39) + ns.FrameTimer(30, HecubahShootZombie3) +} +func HecubahShootZombie3() { + ns.LookAtObject(obj30, obj40) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj30, obj40) + ns.FrameTimer(30, HecubahEncounterSEG3) +} +func HecubahEncounterSEG4() { + ns.SetDialog(obj30, ns.NORMAL, HecubahDialogStart, HecubahDialogEnd) + gvar25 = gvar7 + ns.StartDialog(obj30, ns.GetHost()) +} +func HecubahEncounterSEG3() { + ns.SetDialog(obj31, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + gvar25 = gvar6 + ns.StartDialog(obj31, ns.GetHost()) +} +func hecGone() { + if !ns.IsCaller(obj30) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj30, ns.GetWaypointX(wp50), ns.GetWaypointY(wp50)) + ns.ObjectOff(obj30) +LABEL1: + return +} +func ReleasePlayer() { + if !ns.IsCaller(obj30) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar47) + ns.NoWallSound(false) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj31, ns.NORMAL, necroTalkStart, necroTalkEnd) + gvar24 = 5 + ns.StartDialog(obj31, ns.GetHost()) +LABEL1: + return +} +func necroDies() { + ns.UnlockDoor(obj36) + ns.UnlockDoor(obj37) + ns.CancelDialog(obj31) + ns.SetDialog(obj31, ns.NORMAL, necroTalkStart, necroTalkEnd) + gvar24 = 4 + ns.StartDialog(obj31, ns.GetHost()) +} +func necroTalkStart() { + var v0 int + v0 = gvar24 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroTaunts") + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroGloats") + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroThreatens2") + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL4: + ns.WayPointGroupOff(gvar56) + ns.WayPointGroupOn(gvar57) + ns.LookAtObject(obj31, ns.GetHost()) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroDies") + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL5: + ns.AggressionLevel(obj31, 0.83) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroThreatens") + ns.LookAtObject(obj31, ns.GetHost()) + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL6: + return +} +func necroTalkEnd() { + ns.CancelDialog(obj31) + ns.Frozen(obj31, false) + ns.Frozen(obj38, false) + ns.Frozen(obj40, false) + if gvar24 != 4 { + goto LABEL1 + } + ns.JournalEdit(ns.GetHost(), "Chapter4SearchCrypts", 4) + ns.JournalEntry(ns.GetHost(), "Chapter4Escape", 2) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL1: + return +} +func KillZombie1() { + ns.Damage(obj38, 0, 30, 0) + ns.FrameTimer(5, KillZombie2) +} +func KillZombie2() { + ns.Damage(obj39, 0, 30, 0) + ns.FrameTimer(5, KillZombie3) +} +func KillZombie3() { + ns.Damage(obj40, 0, 30, 0) + ns.FrameTimer(5, KeepZombiesDead) +} +func KeepZombiesDead() { + ns.ZombieStayDown(obj38) + ns.ZombieStayDown(obj39) + ns.ZombieStayDown(obj40) +} +func ZombieInjured() { + ns.Damage(ns.GetTrigger(), 0, 100, 1) +} +func InitializeFistTraps() { + obj27[0] = ns.Object("FistTrap01") + obj27[1] = ns.Object("FistTrap02") + obj27[2] = ns.Object("FistTrap03") + obj27[3] = ns.Object("FistTrap04") + obj27[4] = ns.Object("FistTrap05") + obj27[5] = ns.Object("FistTrap06") + obj27[6] = ns.Object("FistTrap07") + obj27[7] = ns.Object("FistTrap08") + obj27[8] = ns.Object("FistTrap09") + obj27[9] = ns.Object("FistTrap10") + obj27[10] = ns.Object("FistTrap11") + obj27[11] = ns.Object("FistTrap12") + obj27[12] = ns.Object("FistTrap13") + obj26[0] = ns.Object("FistTrapLight01") + obj26[1] = ns.Object("FistTrapLight02") + obj26[2] = ns.Object("FistTrapLight03") + obj26[3] = ns.Object("FistTrapLight04") + obj26[4] = ns.Object("FistTrapLight05") + obj26[5] = ns.Object("FistTrapLight06") + obj26[6] = ns.Object("FistTrapLight07") + obj26[7] = ns.Object("FistTrapLight08") + obj26[8] = ns.Object("FistTrapLight09") + obj26[9] = ns.Object("FistTrapLight10") + obj26[10] = ns.Object("FistTrapLight11") + obj26[11] = ns.Object("FistTrapLight12") + obj26[12] = ns.Object("FistTrapLight13") +} +func MapInitialize() { + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL1 + } + wp53[ivar21] = ns.Waypoint("FlameWay" + strconv.Itoa(ivar21+1)) + ivar21 += 1 + } +LABEL1: + obj30 = ns.Object("Hecubah") + obj31 = ns.Object("Necromancer") + obj32 = ns.Object("EntranceGate1") + obj33 = ns.Object("EntranceGate2") + obj34 = ns.Object("EntranceGate3") + obj35 = ns.Object("EntranceGate4") + obj36 = ns.Object("PitGate1") + obj37 = ns.Object("PitGate2") + obj38 = ns.Object("DeadZombie1") + obj39 = ns.Object("DeadZombie2") + obj40 = ns.Object("DeadZombie3") + obj44 = ns.Object("FlameLever1") + obj45 = ns.Object("FlameLever2") + gvar46 = ns.ObjectGroup("Zombies") + gvar47 = ns.WallGroup("InvisibleBlockWall") + wp48 = ns.Waypoint("SecretAudioOrigin") + wp51 = ns.Waypoint("FlameSound1") + wp52 = ns.Waypoint("FlameSound2") + wp49 = ns.Waypoint("AudioOrigin") + wp54 = ns.Waypoint("WP") + wp50 = ns.Waypoint("HecubahStorage") + gvar55 = ns.WaypointGroup("BeforeSetpieceWay") + gvar56 = ns.WaypointGroup("SetpieceWay") + gvar57 = ns.WaypointGroup("AfterSetpieceWay") + ns.WayPointGroupOff(gvar56) + ns.WayPointGroupOff(gvar57) + ns.StoryPic(obj31, "NecromancerPic") + InitializeFistTraps() + ns.FrameTimer(1, KillZombie1) +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func ToggleSkullHall() { + if !flag17 { + goto LABEL1 + } + flag17 = false + goto LABEL2 +LABEL1: + flag17 = true + skullHallOn() +LABEL2: + return +} +func HecubahDialogStart() { + var v0 int + v0 = gvar25 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + if v0 == gvar7 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.GhostRecognize, "War04a:Hecubah") + goto LABEL5 +LABEL2: + ns.TellStory(ns.GhostRecognize, "War04a:HecubahSEG2") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj31, ns.GetHost()) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroWarnsHec") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj30, ns.GetHost()) + ns.TellStory(ns.GhostRecognize, "War04a:HecubahSEG3") + goto LABEL5 +LABEL5: + return +} +func HecubahDialogEnd() { + var ( + v0 float32 + v1 float32 + v4 ns.WaypointID + v5 int + ) + _ = v1 + _ = v0 + v5 = gvar25 + if v5 == gvar4 { + goto LABEL1 + } + if v5 == gvar5 { + goto LABEL2 + } + if v5 == gvar6 { + goto LABEL3 + } + if v5 == gvar7 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.FrameTimer(20, Zombie2Rise) + ns.FrameTimer(45, Zombie1Rise) + ns.FrameTimer(60, Zombie3Rise) + ns.FrameTimer(60, ZombieAttackHecubah) + gvar25 = gvar5 + ns.CancelDialog(obj30) + goto LABEL5 +LABEL2: + ns.LookAtObject(obj30, obj39) + gvar25 = gvar6 + ns.CancelDialog(obj30) + ns.AggressionLevel(obj38, 0) + ns.AggressionLevel(obj39, 0) + ns.AggressionLevel(obj40, 0) + ns.PushObject(obj38, 40, ns.GetObjectX(obj30), ns.GetObjectY(obj30)) + ns.PushObject(obj39, 40, ns.GetObjectX(obj30), ns.GetObjectY(obj30)) + ns.PushObject(obj40, 40, ns.GetObjectX(obj30), ns.GetObjectY(obj30)) + ns.SetOwner(obj36, obj38) + ns.SetOwner(obj36, obj39) + ns.SetOwner(obj36, obj40) + ns.SetCallback(obj38, 7, ZombieInjured) + ns.SetCallback(obj39, 7, ZombieInjured) + ns.SetCallback(obj40, 7, ZombieInjured) + ns.FrameTimer(20, HecubahShootZombie1) + goto LABEL5 +LABEL3: + gvar25 = gvar7 + ns.CancelDialog(obj31) + ns.FrameTimer(5, HecubahEncounterSEG4) + goto LABEL5 +LABEL4: + v4 = ns.Waypoint("WP") + v0 = ns.GetObjectX(obj30) + v1 = ns.GetObjectY(obj30) + ns.CreatureIdle(obj31) + ns.UnlockDoor(obj32) + ns.UnlockDoor(obj33) + ns.LockDoor(obj34) + ns.LockDoor(obj35) + ns.ObjectOn(obj30) + ns.Move(obj30, v4) + flag19 = true + ns.CancelDialog(obj30) + goto LABEL5 +LABEL5: + return +} +func AttackSuccessful() { + ns.SetDialog(obj30, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj30, ns.GetHost()) +} +func HecubahEncounterSEG2() { + ns.StoryPic(obj30, "HecubahPic") + ns.SetDialog(obj30, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj30, ns.GetHost()) +} +func HecubahEncounterSEG1() { + if !(!flag18 && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + flag18 = true + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahEncounterSEG2) +LABEL1: + return +} +func ResetFistTrap(a1 int) { + ns.ObjectOn(obj26[a1]) + ns.ObjectOn(obj27[a1]) + ns.MoveWaypoint(wp49, ns.GetObjectX(obj27[a1]), ns.GetObjectY(obj27[a1])) + ns.AudioEvent(ns.TriggerReleased, wp49) +} +func DropFist(a1 int) { + ns.CastSpellObjectLocation(ns.SPELL_FIST, obj27[a1], ns.GetObjectX(obj27[a1]), ns.GetObjectY(obj27[a1])) + ns.ObjectOff(obj27[a1]) + ns.ObjectOff(obj26[a1]) + ns.FrameTimerWithArg(ivar28, a1, ResetFistTrap) +} +func ActivateFistTrap01() { + DropFist(0) +} +func ActivateFistTrap02() { + DropFist(1) +} +func ActivateFistTrap03() { + DropFist(2) +} +func ActivateFistTrap04() { + DropFist(3) +} +func ActivateFistTrap05() { + DropFist(4) +} +func ActivateFistTrap06() { + DropFist(5) +} +func ActivateFistTrap07() { + DropFist(6) +} +func ActivateFistTrap08() { + DropFist(7) +} +func ActivateFistTrap09() { + DropFist(8) +} +func ActivateFistTrap10() { + DropFist(9) +} +func ActivateFistTrap11() { + DropFist(10) +} +func ActivateFistTrap12() { + DropFist(11) +} +func ActivateFistTrap13() { + DropFist(12) +} +func NoEnemys() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp48) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + SecretSFX() +} +func Secret02Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.ObjectOn(ns.Object("SecretLord")) + SecretSFX() +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con04b/dummy_test.go b/examples/con04b/dummy_test.go new file mode 100644 index 0000000..c243cba --- /dev/null +++ b/examples/con04b/dummy_test.go @@ -0,0 +1,6 @@ +package con04b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con04c/con04c.go b/examples/con04c/con04c.go new file mode 100644 index 0000000..3d974a0 --- /dev/null +++ b/examples/con04c/con04c.go @@ -0,0 +1,941 @@ +package con04c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.WallGroupID + obj5 ns.ObjectID + obj6 ns.ObjectID + ivar7 int + ivar8 int + fvar9 float32 + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + gvar42 ns.ObjectGroupID + gvar43 ns.ObjectGroupID + gvar44 ns.ObjectGroupID + obj45 [13]ns.ObjectID + obj46 [13]ns.ObjectID + ivar47 int + wp48 ns.WaypointID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + wp55 ns.WaypointID + wp56 ns.WaypointID + gvar57 ns.WallGroupID + gvar58 ns.WallGroupID + flag59 bool + flag60 bool + gvar61 int + gvar62 int + gvar63 int + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + gvar70 ns.ObjectGroupID + wp71 [4]ns.WaypointID + wp72 ns.WaypointID + wp73 ns.WaypointID + flag74 bool + flag75 bool + ivar76 int + wp77 ns.WaypointID + gvar78 ns.ObjectGroupID + ivar79 int + ivar80 int + ivar81 int + ivar82 int + ivar83 int + ivar84 int + ivar85 int + ivar86 int + ivar87 int + ivar88 int + ivar89 int + gvar90 int + gvar91 int + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID +) + +func init() { + ivar7 = 50 + ivar8 = 20 + fvar9 = 5 + ivar47 = 120 + flag59 = false + flag60 = false + gvar61 = 0 + gvar62 = 1 + gvar63 = gvar62 + flag74 = false + flag75 = false + ivar76 = 0 + ivar79 = 0 + ivar80 = 0 + ivar81 = 0 + ivar82 = 0 + ivar83 = 0 + ivar84 = 0 + ivar85 = 0 + ivar86 = 0 + ivar87 = 0 + ivar88 = 0 + ivar89 = 0 + gvar90 = 0 + gvar91 = 0 +} +func InitializeSkeletonAmbush() { + gvar4 = ns.WallGroup("SkeletonAmbushWalls") +} +func SkeletonAmbush() { + ns.WallGroupBreak(gvar4) +} +func SkeletonAmbushTimer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.FrameTimer(45, SkeletonAmbush) +LABEL1: + return +} +func EnablePitTrapElevator01() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(ns.Object("PitTrapElevator01")) +} +func EnablePitTrapElevator02() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(ns.Object("PitTrapElevator02")) +} +func OpenPitElevatorWalls01() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(ns.WallGroup("PitTrapElevatorWalls01")) +} +func OpenPitElevatorWalls02() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(ns.WallGroup("PitTrapElevatorWalls02")) +} +func ZombieAmbush() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupBreak(ns.WallGroup("ZombieAmbushWalls")) +} +func InitializeHallwayArrowTraps() { + obj5 = ns.Object("HallwayArrowTrap01") + obj6 = ns.Object("HallwayArrowTrap02") +} +func ResetHallwayArrowTrap01() { + ns.ObjectOff(obj5) +} +func ResetHallwayArrowTrap02() { + ns.ObjectOff(obj6) +} +func ActivateHallwayArrowTrap01() { + ns.ObjectOn(obj5) + ns.FrameTimer(1, ResetHallwayArrowTrap01) +} +func ActivateHallwayArrowTrap02() { + ns.ObjectOn(obj6) + ns.FrameTimer(1, ResetHallwayArrowTrap02) +} +func InitializeBlockTrap() { + obj10 = ns.Object("SpikeBlock01") + obj11 = ns.Object("SpikeBlock02") + obj12 = ns.Object("SpikeBlock03") + obj13 = ns.Object("SpikeBlock04") + obj14 = ns.Object("SpikeBlock05") + obj15 = ns.Object("SpikeBlock06") + obj16 = ns.Object("SpikeBlock07") + obj17 = ns.Object("SpikeBlock08") + obj18 = ns.Object("SpikeBlock09") + obj19 = ns.Object("SpikeBlock10") + obj20 = ns.Object("SpikeBlock11") + obj21 = ns.Object("SpikeBlock12") + obj22 = ns.Object("SpikeBlock13") + obj23 = ns.Object("SpikeBlock14") + obj24 = ns.Object("SpikeBlock15") + obj25 = ns.Object("SpikeBlock16") + wp26 = ns.Waypoint("BlockWP01") + wp27 = ns.Waypoint("BlockWP02") + wp28 = ns.Waypoint("BlockWP03") + wp29 = ns.Waypoint("BlockWP04") + wp30 = ns.Waypoint("BlockWP05") + wp31 = ns.Waypoint("BlockWP06") + wp32 = ns.Waypoint("BlockWP07") + wp33 = ns.Waypoint("BlockWP08") + wp34 = ns.Waypoint("BlockWP09") + wp35 = ns.Waypoint("BlockWP10") + wp36 = ns.Waypoint("BlockWP11") + wp37 = ns.Waypoint("BlockWP12") + wp38 = ns.Waypoint("BlockWP13") + wp39 = ns.Waypoint("BlockWP14") + wp40 = ns.Waypoint("BlockWP15") + wp41 = ns.Waypoint("BlockWP16") + gvar42 = ns.ObjectGroup("BlockTrap01Triggers") + gvar43 = ns.ObjectGroup("BlockTrap02Triggers") + gvar44 = ns.ObjectGroup("BlockTrap03Triggers") +} +func BlockTrapBoom(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.AudioEvent(ns.HammerMissing, wp28) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp28), ns.GetWaypointY(wp28), fvar9, 0) + goto LABEL4 +LABEL2: + ns.AudioEvent(ns.HammerMissing, wp34) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp34), ns.GetWaypointY(wp34), fvar9, 0) + goto LABEL4 +LABEL3: + ns.AudioEvent(ns.HammerMissing, wp38) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp38), ns.GetWaypointY(wp38), fvar9, 0) + goto LABEL4 +LABEL4: + return +} +func ResetBlockTrap(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.ObjectGroupOn(gvar42) + ns.AudioEvent(ns.TriggerReleased, wp28) + goto LABEL4 +LABEL2: + ns.ObjectGroupOn(gvar43) + ns.AudioEvent(ns.TriggerReleased, wp34) + goto LABEL4 +LABEL3: + ns.ObjectGroupOn(gvar44) + ns.AudioEvent(ns.TriggerReleased, wp38) + goto LABEL4 +LABEL4: + return +} +func CloseBlockTrap01() { + ns.ObjectGroupOff(gvar42) + ns.Move(obj10, wp26) + ns.Move(obj11, wp27) + ns.Move(obj12, wp28) + ns.Move(obj13, wp29) + ns.Move(obj14, wp30) + ns.Move(obj15, wp31) + ns.FrameTimerWithArg(ivar8, 1, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 1, ResetBlockTrap) +} +func CloseBlockTrap02() { + ns.ObjectGroupOff(gvar43) + ns.Move(obj16, wp32) + ns.Move(obj17, wp33) + ns.Move(obj18, wp34) + ns.Move(obj19, wp35) + ns.Move(obj20, wp36) + ns.Move(obj21, wp37) + ns.FrameTimerWithArg(ivar8, 2, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 2, ResetBlockTrap) +} +func CloseBlockTrap03() { + ns.ObjectGroupOff(gvar44) + ns.Move(obj22, wp38) + ns.Move(obj23, wp39) + ns.Move(obj24, wp40) + ns.Move(obj25, wp41) + ns.FrameTimerWithArg(ivar8, 3, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 3, ResetBlockTrap) +} +func InitializeFistTraps() { + obj46[0] = ns.Object("FistTrap01") + obj46[1] = ns.Object("FistTrap02") + obj46[2] = ns.Object("FistTrap03") + obj46[3] = ns.Object("FistTrap04") + obj46[4] = ns.Object("FistTrap05") + obj46[5] = ns.Object("FistTrap06") + obj46[6] = ns.Object("FistTrap07") + obj46[7] = ns.Object("FistTrap08") + obj46[8] = ns.Object("FistTrap09") + obj46[9] = ns.Object("FistTrap10") + obj46[10] = ns.Object("FistTrap11") + obj46[11] = ns.Object("FistTrap12") + obj46[12] = ns.Object("FistTrap13") + obj45[0] = ns.Object("FistTrapLight01") + obj45[1] = ns.Object("FistTrapLight02") + obj45[2] = ns.Object("FistTrapLight03") + obj45[3] = ns.Object("FistTrapLight04") + obj45[4] = ns.Object("FistTrapLight05") + obj45[5] = ns.Object("FistTrapLight06") + obj45[6] = ns.Object("FistTrapLight07") + obj45[7] = ns.Object("FistTrapLight08") + obj45[8] = ns.Object("FistTrapLight09") + obj45[9] = ns.Object("FistTrapLight10") + obj45[10] = ns.Object("FistTrapLight11") + obj45[11] = ns.Object("FistTrapLight12") + obj45[12] = ns.Object("FistTrapLight13") +} +func ResetFistTrap(a1 int) { + ns.ObjectOn(obj45[a1]) + ns.ObjectOn(obj46[a1]) + ns.MoveWaypoint(wp48, ns.GetObjectX(obj46[a1]), ns.GetObjectY(obj46[a1])) + ns.AudioEvent(ns.TriggerReleased, wp48) +} +func DropFist(a1 int) { + ns.CastSpellObjectLocation(ns.SPELL_FIST, obj46[a1], ns.GetObjectX(obj46[a1]), ns.GetObjectY(obj46[a1])) + ns.ObjectOff(obj46[a1]) + ns.ObjectOff(obj45[a1]) + ns.FrameTimerWithArg(ivar47, a1, ResetFistTrap) +} +func ActivateFistTrap01() { + DropFist(0) +} +func ActivateFistTrap02() { + DropFist(1) +} +func ActivateFistTrap03() { + DropFist(2) +} +func ActivateFistTrap04() { + DropFist(3) +} +func ActivateFistTrap05() { + DropFist(4) +} +func ActivateFistTrap06() { + DropFist(5) +} +func ActivateFistTrap07() { + DropFist(6) +} +func ActivateFistTrap08() { + DropFist(7) +} +func ActivateFistTrap09() { + DropFist(8) +} +func ActivateFistTrap10() { + DropFist(9) +} +func ActivateFistTrap11() { + DropFist(10) +} +func ActivateFistTrap12() { + DropFist(11) +} +func ActivateFistTrap13() { + DropFist(12) +} +func EnableGuardian() { + ns.WideScreen(false) + ns.AudioEvent(ns.SwordsmanRecognize, wp48) + ns.Frozen(ns.GetHost(), false) + ns.AggressionLevel(obj53, 0.83) +} +func GuardianEnterFX() { + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.WallDestroyedStone, wp48) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) +} +func GuardianMoveToArena() { + ns.Move(obj53, wp56) +} +func InitializeGuardian() { + obj53 = ns.Object("Guardian") + obj49 = ns.Object("RightGuardianGate") + obj50 = ns.Object("LeftGuardianGate") + obj51 = ns.Object("RightGuardianDoor") + obj52 = ns.Object("LeftGuardianDoor") + wp56 = ns.Waypoint("GuardianArena") + gvar57 = ns.WallGroup("GuardianWalls") + gvar58 = ns.WallGroup("GuardianDestructableWalls") + obj54 = ns.Object("GuardianDoorTrigger") + wp55 = ns.Waypoint("GuardianDoorWP") + ns.LockDoor(obj49) + ns.LockDoor(obj50) +} +func GuardianEnter() { + if !(!flag59 && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + ns.MusicPushEvent() + ns.Music(26, 100) + ns.LockDoor(obj51) + ns.LockDoor(obj52) + ns.ObjectOn(obj54) + flag59 = true + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(60, GuardianMoveToArena) + ns.FrameTimer(30, GuardianEnterFX) +LABEL1: + return +} +func BreakGuardianWalls() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.WallDestroyedStone, wp48) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar57) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar58) +} +func GuardianArrivesInArena() { + if !ns.IsCaller(obj53) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LookAtObject(obj53, ns.GetHost()) + ns.FrameTimer(30, EnableGuardian) + ns.ObjectOff(obj54) +LABEL1: + return +} +func GuardianDie() { + if flag60 { + goto LABEL1 + } + flag60 = true + ns.UnlockDoor(obj50) + ns.UnlockDoor(obj49) + ns.UnlockDoor(obj52) + ns.UnlockDoor(obj51) + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagDrop, wp48) + ns.PrintToAll("War04d:WarriorDie") + ns.GiveXp(ns.GetHost(), 700) + ns.MusicPopEvent() +LABEL1: + return +} +func ClearGuardianDoor() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MoveObject(ns.GetCaller(), ns.GetWaypointX(wp55), ns.GetWaypointY(wp55)) +LABEL1: + return +} +func EnableKeeper() { + ns.LookAtObject(obj64, ns.GetHost()) + ns.AggressionLevel(obj64, 0.83) +} +func InitializeKeeper() { + obj64 = ns.Object("Keeper") + obj65 = ns.Object("LeftKeeperEntranceDoor") + obj66 = ns.Object("RightKeeperEntranceDoor") + obj67 = ns.Object("LeftKeeperExitDoor") + obj68 = ns.Object("RightKeeperExitDoor") + obj69 = ns.Object("KeeperDoorTrigger") + wp71[0] = ns.Waypoint("BlinkWP1") + wp71[1] = ns.Waypoint("BlinkWP2") + wp71[2] = ns.Waypoint("BlinkWP3") + wp71[3] = ns.Waypoint("BlinkWP4") + wp72 = ns.Waypoint("KeeperEnterWP") + wp73 = ns.Waypoint("KeeperDoorWP") + ns.LockDoor(obj67) + ns.LockDoor(obj68) +} +func EnemyGoHome() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !(r1 && ns.GetCaller() != obj64) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func GoInvisible() { + var ( + v0 int + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 [4]float32 + v6 float32 + v7 int + ) + v6 = 0 + v7 = 0 + ivar76 += 1 + if gvar63 != gvar62 { + goto LABEL1 + } + gvar63 = gvar61 + return + goto LABEL2 +LABEL1: + gvar63 = gvar62 +LABEL2: + v3 = ns.GetObjectX(obj64) + v4 = ns.GetObjectY(obj64) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL3 + } + v5[v0] = ns.Distance(v3, v4, ns.GetWaypointX(wp71[v0]), ns.GetWaypointY(wp71[v0])) + v0 += 1 + } +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL5 + } + if !(v5[v0] > v6) { + goto LABEL6 + } + v6 = v5[v0] + v7 = v0 + LABEL6: + v0 += 1 + } +LABEL5: + if !(ns.CurrentHealth(obj64) > 0) { + goto LABEL8 + } + v1 = ns.GetWaypointX(wp71[v7]) + v2 = ns.GetWaypointY(wp71[v7]) + if !(ivar76 >= 4) { + goto LABEL9 + } + ivar76 = 0 + ns.Enchant(obj64, ns.ENCHANT_INVISIBLE, 3) +LABEL9: + ns.Effect(ns.TELEPORT, v3, v4, 0, 0) + ns.MoveWaypoint(wp48, v3, v4) + ns.AudioEvent(ns.BlinkCast, wp48) + ns.Effect(ns.SMOKE_BLAST, v1, v2, 0, 0) + ns.MoveObject(obj64, v1, v2) +LABEL8: + return +} +func DisableKeeperDoorTrigger() { + ns.ObjectOff(obj69) +} +func KeeperEnter() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp72) + v1 = ns.GetWaypointY(wp72) + if !(ns.IsCaller(ns.GetHost()) && flag75 == false) { + goto LABEL1 + } + ns.ObjectOn(obj69) + ns.MusicPushEvent() + ns.Music(4, 100) + flag75 = true + ns.Effect(ns.TELEPORT, v0, v1, 0, 0) + ns.AudioEvent(ns.TeleportIn, wp72) + ns.MoveObject(obj64, v0, v1) + ns.LockDoor(obj65) + ns.LockDoor(obj66) + ns.FrameTimer(1, EnableKeeper) + ns.FrameTimer(30, DisableKeeperDoorTrigger) +LABEL1: + return +} +func KeeperDie() { + if flag74 { + goto LABEL1 + } + flag74 = true + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagCapture, wp48) + ns.PrintToAll("War04f:WizardDie") + ns.GiveXp(ns.GetHost(), 1000) + ns.UnlockDoor(obj68) + ns.UnlockDoor(obj67) + ns.UnlockDoor(obj66) + ns.UnlockDoor(obj65) + ns.MusicPopEvent() +LABEL1: + return +} +func ClearKeeperDoor() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MoveObject(ns.GetCaller(), ns.GetWaypointX(wp73), ns.GetWaypointY(wp73)) +LABEL1: + return +} +func InitializeFlameGrates() { + gvar70 = ns.ObjectGroup("FlameGrateFlames") +} +func ToggleFlameGrates() { + ns.ObjectGroupToggle(gvar70) +} +func InitializeSkullGuns() { + obj92 = ns.Object("ArrowTrap01") + obj93 = ns.Object("ArrowTrap02") + obj94 = ns.Object("ArrowTrap03") + obj95 = ns.Object("ArrowTrap04") + obj96 = ns.Object("ArrowTrap05") + obj97 = ns.Object("ArrowTrap06") + obj98 = ns.Object("ArrowTrap07") + obj99 = ns.Object("ArrowTrap08") + obj100 = ns.Object("ArrowTrap09") + obj101 = ns.Object("ArrowTrap10") + obj102 = ns.Object("ArrowTrap11") +} +func InitializeMonsterGroups() { + gvar78 = ns.ObjectGroup("MonsterGroup01") +} +func MapInitialize() { + wp48 = ns.Waypoint("AudioOrigin") + wp77 = ns.Waypoint("SecretAudioOrigin") + InitializeSkullGuns() + InitializeSkeletonAmbush() + InitializeGuardian() + InitializeKeeper() + InitializeFistTraps() + InitializeHallwayArrowTraps() + InitializeMonsterGroups() + InitializeBlockTrap() + InitializeFlameGrates() + ns.Music(20, 100) +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func EnableMonsterGroup01() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar78) +} +func NoMonsters() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp77, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp77) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + ns.AggressionLevel(ns.Object("Secret01Spider"), 0.83) + SecretSFX() +} +func Secret02Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) + SecretSFX() +} +func CheckRows(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + if v0 == 6 { + goto LABEL6 + } + if v0 == 7 { + goto LABEL7 + } + if v0 == 8 { + goto LABEL8 + } + if v0 == 9 { + goto LABEL9 + } + if v0 == 10 { + goto LABEL10 + } + if v0 == 11 { + goto LABEL11 + } + goto LABEL12 +LABEL1: + if !(ivar79 > 0) { + goto LABEL13 + } + ns.ObjectOn(obj92) + goto LABEL14 +LABEL13: + ns.ObjectOff(obj92) +LABEL14: + goto LABEL12 +LABEL2: + if !(ivar80 > 0) { + goto LABEL15 + } + ns.ObjectOn(obj93) + goto LABEL16 +LABEL15: + ns.ObjectOff(obj93) +LABEL16: + goto LABEL12 +LABEL3: + if !(ivar81 > 0) { + goto LABEL17 + } + ns.ObjectOn(obj94) + goto LABEL18 +LABEL17: + ns.ObjectOff(obj94) +LABEL18: + goto LABEL12 +LABEL4: + if !(ivar82 > 0) { + goto LABEL19 + } + ns.ObjectOn(obj95) + goto LABEL20 +LABEL19: + ns.ObjectOff(obj95) +LABEL20: + goto LABEL12 +LABEL5: + if !(ivar83 > 0) { + goto LABEL21 + } + ns.ObjectOn(obj96) + goto LABEL22 +LABEL21: + ns.ObjectOff(obj96) +LABEL22: + goto LABEL12 +LABEL6: + if !(ivar84 > 0) { + goto LABEL23 + } + ns.ObjectOn(obj97) + goto LABEL24 +LABEL23: + ns.ObjectOff(obj97) +LABEL24: + goto LABEL12 +LABEL7: + if !(ivar85 > 0) { + goto LABEL25 + } + ns.ObjectOn(obj98) + goto LABEL26 +LABEL25: + ns.ObjectOff(obj98) +LABEL26: + goto LABEL12 +LABEL8: + if !(ivar86 > 0) { + goto LABEL27 + } + ns.ObjectOn(obj99) + goto LABEL28 +LABEL27: + ns.ObjectOff(obj99) +LABEL28: + goto LABEL12 +LABEL9: + if !(ivar87 > 0) { + goto LABEL29 + } + ns.ObjectOn(obj100) + goto LABEL30 +LABEL29: + ns.ObjectOff(obj100) +LABEL30: + goto LABEL12 +LABEL10: + if !(ivar88 > 0) { + goto LABEL31 + } + ns.ObjectOn(obj101) + goto LABEL32 +LABEL31: + ns.ObjectOff(obj101) +LABEL32: + goto LABEL12 +LABEL11: + if !(ivar89 > 0) { + goto LABEL33 + } + ns.ObjectOn(obj102) + goto LABEL34 +LABEL33: + ns.ObjectOff(obj102) +LABEL34: + goto LABEL12 +LABEL12: + return +} +func ActivateRow01() { + ivar79 += 1 + CheckRows(1) +} +func DisableRow01() { + ivar79 -= 1 + CheckRows(1) +} +func ActivateRow02() { + ivar80 += 1 + CheckRows(2) +} +func DisableRow02() { + ivar80 -= 1 + CheckRows(2) +} +func ActivateRow03() { + ivar81 += 1 + CheckRows(3) +} +func DisableRow03() { + ivar81 -= 1 + CheckRows(3) +} +func ActivateRow04() { + ivar82 += 1 + CheckRows(4) +} +func DisableRow04() { + ivar82 -= 1 + CheckRows(4) +} +func ActivateRow05() { + ivar83 += 1 + CheckRows(5) +} +func DisableRow05() { + ivar83 -= 1 + CheckRows(5) +} +func ActivateRow06() { + ivar84 += 1 + CheckRows(6) +} +func DisableRow06() { + ivar84 -= 1 + CheckRows(6) +} +func ActivateRow07() { + ivar85 += 1 + CheckRows(7) +} +func DisableRow07() { + ivar85 -= 1 + CheckRows(7) +} +func ActivateRow08() { + ivar86 += 1 + CheckRows(8) +} +func DisableRow08() { + ivar86 -= 1 + CheckRows(8) +} +func ActivateRow09() { + ivar87 += 1 + CheckRows(9) +} +func DisableRow09() { + ivar87 -= 1 + CheckRows(9) +} +func ActivateRow10() { + ivar88 += 1 + CheckRows(10) +} +func DisableRow10() { + ivar88 -= 1 + CheckRows(10) +} +func ActivateRow11() { + ivar89 += 1 + CheckRows(11) +} +func DisableRow11() { + ivar89 -= 1 + CheckRows(11) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con04c/dummy_test.go b/examples/con04c/dummy_test.go new file mode 100644 index 0000000..1719805 --- /dev/null +++ b/examples/con04c/dummy_test.go @@ -0,0 +1,6 @@ +package con04c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con05a/con05a.go b/examples/con05a/con05a.go new file mode 100644 index 0000000..ea6ca24 --- /dev/null +++ b/examples/con05a/con05a.go @@ -0,0 +1,1991 @@ +package con05a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + gvar56 ns.ObjectID + gvar57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + gvar64 ns.ObjectGroupID + gvar65 ns.ObjectGroupID + gvar66 ns.ObjectID + ivar67 int + ivar68 int + gvar69 int + gvar70 int + flag71 bool + gvar72 int + gvar73 int + gvar74 int + gvar75 int + gvar76 int + gvar77 int + gvar78 int + gvar79 int + gvar80 int + gvar81 int + gvar82 int + gvar83 int + gvar84 int + gvar85 int + gvar86 int + flag87 bool + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + obj103 ns.ObjectID + obj104 ns.ObjectID + obj105 ns.ObjectID + obj106 ns.ObjectID + obj107 ns.ObjectID + obj108 ns.ObjectID + obj109 ns.ObjectID + obj110 ns.ObjectID + obj111 ns.ObjectID + obj112 ns.ObjectID + obj113 ns.ObjectID + obj114 ns.ObjectID + obj115 ns.ObjectID + obj116 ns.ObjectID + obj117 ns.ObjectID + obj118 ns.ObjectID + obj119 ns.ObjectID + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + obj123 ns.ObjectID + obj124 ns.ObjectID + obj125 ns.ObjectID + obj126 ns.ObjectID + obj127 ns.ObjectID + obj128 ns.ObjectID + obj129 ns.ObjectID + obj130 ns.ObjectID + obj131 ns.ObjectID + obj132 ns.ObjectID + obj133 ns.ObjectID + obj134 ns.ObjectID + obj135 ns.ObjectID + obj136 ns.ObjectID + obj137 ns.ObjectID + obj138 ns.ObjectID + obj139 ns.ObjectID + obj140 ns.ObjectID + obj141 ns.ObjectID + wp142 int + wp143 int + obj144 ns.ObjectID + obj145 ns.ObjectID + obj146 ns.ObjectID + obj147 ns.ObjectID + obj148 ns.ObjectID + obj149 ns.ObjectID + obj150 ns.ObjectID + obj151 ns.ObjectID + obj152 ns.ObjectID + obj153 ns.ObjectID + obj154 ns.ObjectID + obj155 ns.ObjectID + obj156 ns.ObjectID + obj157 ns.ObjectID + obj158 ns.ObjectID + obj159 ns.ObjectID + obj160 ns.ObjectID + obj161 ns.ObjectID + obj162 ns.ObjectID + obj163 ns.ObjectID + obj164 ns.ObjectID + obj165 ns.ObjectID + obj166 ns.ObjectID + obj167 ns.ObjectID + obj168 ns.ObjectID + obj169 ns.ObjectID + obj170 ns.ObjectID + gvar171 int + gvar172 int + gvar173 int + gvar174 int + obj175 ns.ObjectID + obj176 ns.ObjectID + obj177 ns.ObjectID + obj178 ns.ObjectID + obj179 ns.ObjectID + obj180 ns.ObjectID + obj181 ns.ObjectID + obj182 ns.ObjectID + obj183 ns.ObjectID + obj184 ns.ObjectID + gvar185 int + wp186 ns.WaypointID + wp187 ns.WaypointID + wp188 ns.WaypointID + wp189 ns.WaypointID + wp190 ns.WaypointID + wp191 ns.WaypointID + wp192 ns.WaypointID + obj193 ns.ObjectID + obj194 ns.ObjectID + obj195 ns.ObjectID + obj196 ns.ObjectID + gvar197 int + gvar198 int + gvar199 int + gvar200 int + wp201 ns.WaypointID + wp202 ns.WaypointID + wp203 ns.WaypointID + wp204 ns.WaypointID + wp205 ns.WaypointID + wp206 ns.WaypointID + wp207 ns.WaypointID + wp208 ns.WaypointID + wp209 ns.WaypointID + wp210 ns.WaypointID + wp211 ns.WaypointID + wp212 ns.WaypointID + wp213 ns.WaypointID + wp214 ns.WaypointID + wp215 ns.WaypointID + wp216 ns.WaypointID + wp217 ns.WaypointID + wp218 ns.WaypointID + wp219 ns.WaypointID + wp220 ns.WaypointID + wp221 ns.WaypointID + ivar222 int +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + gvar9 = 5 + gvar10 = 0 + gvar11 = 1 + gvar12 = 0 + gvar13 = 1 + gvar14 = 0 + gvar15 = 1 + gvar16 = 2 + gvar17 = 3 + gvar18 = 4 + gvar19 = 5 + gvar20 = 0 + gvar21 = 1 + gvar22 = 2 + gvar23 = 3 + gvar24 = 0 + gvar25 = 1 + gvar26 = 0 + gvar27 = 1 + gvar28 = 2 + gvar29 = 3 + ivar67 = 0 + ivar68 = 0 + gvar69 = 0 + gvar70 = 0 + flag71 = false + gvar72 = gvar4 + gvar73 = gvar10 + gvar74 = gvar12 + gvar75 = gvar20 + gvar76 = gvar14 + gvar77 = gvar24 + gvar84 = 0 + gvar85 = 0 + gvar86 = 0 + ivar222 = 0 +} +func OgreDeath() { + ivar67 += 1 + if !(ivar67 >= 4) { + goto LABEL1 + } + SetTownDialog() + ns.Music(23, 100) +LABEL1: + return +} +func SetTownDialog() { + ns.SetDialog(obj176, ns.NORMAL, Villager1Start, Villager1End) + ns.StoryPic(obj176, "MalePic8") + ns.SetDialog(obj177, ns.NORMAL, Villager2Start, Villager2End) + ns.StoryPic(obj177, "MalePic3") + ns.SetDialog(obj178, ns.NORMAL, Villager3Start, Villager3End) + ns.StoryPic(obj178, "MalePic2") + ns.SetDialog(obj179, ns.NORMAL, Villager4Start, Villager4End) + ns.StoryPic(obj179, "MalePic14") + ns.SetDialog(obj180, ns.NORMAL, Villager5Start, Villager5End) + ns.StoryPic(obj180, "MalePic9") +} +func BeginMission() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp209) + v1 = ns.GetWaypointY(wp209) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(obj119) + ns.ObjectOff(obj120) + ns.ObjectOff(obj121) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + LetterBoxOn() + ns.MoveWaypoint(wp33, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.TeleportIn, wp33) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, v0, v1, 0, 0) + ns.MoveObject(obj55, v0, v1) + ns.Frozen(obj55, true) + ns.CreatureIdle(obj55) + ns.LookAtObject(obj55, ns.GetHost()) + ns.FrameTimer(5, BeginMission2) +LABEL1: + return +} +func BeginMission2() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp209) + v1 = ns.GetWaypointY(wp209) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ns.MoveWaypoint(wp207, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.FrameTimer(25, BeginMission3) +} +func BeginMission3() { + ns.StartDialog(obj55, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj55) + ns.LookAtObject(obj55, ns.GetHost()) +} +func BeginMission4() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + _ = v3 + _ = v2 + v0 = ns.GetWaypointX(wp209) + v1 = ns.GetWaypointY(wp209) + v2 = ns.GetWaypointX(wp207) + v3 = ns.GetWaypointY(wp207) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, v0, v1, 0, 0) + ns.DestroyChat(obj55) + ns.AudioEvent(ns.TeleportOut, wp33) + ns.MoveObject(obj55, 816, 1980) + ns.CreatureIdle(obj55) + LetterBoxOff() + ns.FrameTimer(15, BeginMission5) +} +func BeginMission5() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp209) + v1 = ns.GetWaypointY(wp209) + ns.Frozen(ns.GetHost(), false) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, v0, v1, 0, 0) +} +func HorvathStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = gvar69 + if v2 == gvar26 { + goto LABEL1 + } + if v2 == gvar27 { + goto LABEL2 + } + if v2 == gvar28 { + goto LABEL3 + } + if v2 == gvar29 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con05A.scr:HorvathGreeting") + goto LABEL5 +LABEL2: + if gvar70 != 1 { + goto LABEL6 + } + v0 = ns.GetWaypointX(wp207) + v1 = ns.GetWaypointY(wp207) + ns.AudioEvent(ns.CurePoisonCast, wp207) + ns.AudioEvent(ns.CurePoisonEffect, wp207) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + gvar69 = gvar28 + ns.TellStory(ns.SwordsmanHurt, "Con05A.scr:HorvathReturned") + goto LABEL5 + goto LABEL3 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "Con05A.scr:HorvathWaiting") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "Con05A.scr:HorvathReturned") + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "Con05A.scr:HorvathIdle") + goto LABEL5 +LABEL5: + return +} +func HorvathEnd() { + var v0 int + v0 = gvar69 + if v0 == gvar26 { + goto LABEL1 + } + if v0 == gvar27 { + goto LABEL2 + } + if v0 == gvar28 { + goto LABEL3 + } + if v0 == gvar29 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.JournalEntry(ns.GetHost(), "Con05Quest1", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + gvar69 = gvar27 + ns.FrameTimer(1, BeginMission4) + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + gvar69 = gvar29 + ns.GiveXp(ns.GetHost(), 250) + ns.JournalEdit(ns.GetHost(), "Con05Quest1", 4) + ns.PrintToAll("Con05A.scr:ObjectiveComplete") + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func ThaviusOgreRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.CancelDialog(obj176) + ns.CancelDialog(obj177) + ns.CancelDialog(obj178) + ns.CancelDialog(obj179) + ns.CancelDialog(obj180) +LABEL1: + return +} +func ThaviusOgreDeath() { + ivar68 += 1 + if !(ivar68 >= 2 && ivar67 >= 4) { + goto LABEL1 + } + SetTownDialog() +LABEL1: + return +} +func ChangeMaps() { + ns.MoveObject(ns.GetHost(), 3402, 513) +} +func GetFarmerStaff() { + ns.SetDialog(obj126, ns.NORMAL, FarmerStart, FarmerEnd) + gvar72 = gvar7 +} +func KillCorpses() { + ns.FrameTimer(30, KillCorpses2) +} +func DisableVillagers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp188) + v1 = ns.GetWaypointY(wp188) + v2 = ns.GetWaypointX(wp189) + v3 = ns.GetWaypointY(wp189) + ns.CreatureGuard(obj126, v0, v1, v2, v3, 0) +} +func LockDoors() { + ns.LockDoor(obj195) + ns.LockDoor(obj196) + ns.LockDoor(obj193) + ns.LockDoor(obj194) +} +func SwordsmanStart() { + var v0 int + ns.Frozen(obj140, true) + ns.CreatureIdle(obj140) + ns.LookAtObject(obj140, ns.GetHost()) + v0 = gvar74 + if v0 == gvar12 { + goto LABEL1 + } + if v0 == gvar13 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj140, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SwordsmanGreeting") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj140, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SwordsmanEnd") + goto LABEL3 +LABEL3: + return +} +func SwordsmanEnd() { + var v0 int + ns.Frozen(obj140, false) + ns.CreatureGuard(obj140, ns.GetWaypointX(wp186), ns.GetWaypointY(wp186), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) + v0 = gvar74 + if v0 == gvar12 { + goto LABEL1 + } + if v0 == gvar13 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.FrameTimer(1, SwordsmanTriggerC) + gvar74 = gvar13 + goto LABEL3 +LABEL2: + ns.LookAtDirection(obj140, ns.NE) + goto LABEL3 +LABEL3: + return +} +func DrunkStart() { + ns.LookAtObject(ns.GetTrigger(), ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:DrunkGreeting") +} +func DrunkEnd() { + ns.LookAtDirection(ns.GetTrigger(), ns.NW) +} +func FarmerStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + _ = v1 + _ = v0 + v2 = gvar72 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + if v2 == gvar9 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + if !ns.HasItem(ns.GetHost(), obj125) { + goto LABEL8 + } + gvar72 = gvar7 + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerReturned") + goto LABEL7 + goto LABEL2 +LABEL8: + ns.CreatureIdle(obj126) + ns.LookAtObject(obj126, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerGreeting") + goto LABEL7 +LABEL2: + ns.CreatureIdle(obj126) + ns.LookAtObject(obj126, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerGreeting") + goto LABEL7 +LABEL3: + ns.CreatureIdle(obj126) + ns.LookAtObject(obj126, ns.GetHost()) + if !ns.HasItem(ns.GetHost(), obj125) { + goto LABEL9 + } + v0 = ns.GetWaypointX(wp188) + v1 = ns.GetWaypointY(wp188) + gvar72 = gvar7 + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerReturned") + goto LABEL7 + goto LABEL4 +LABEL9: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWaiting") + goto LABEL7 +LABEL4: + ns.CreatureIdle(obj126) + ns.LookAtObject(obj126, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerReturned") + goto LABEL7 +LABEL5: + ns.CreatureIdle(obj126) + ns.LookAtObject(obj126, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerIdle") + goto LABEL7 +LABEL6: + if !ns.HasItem(ns.GetHost(), obj125) { + goto LABEL10 + } + gvar72 = gvar7 + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerReturned") + goto LABEL7 + goto LABEL7 +LABEL10: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerHuffy") + goto LABEL7 +LABEL7: + return +} +func FarmerEnd() { + var ( + v0 int + v1 int + v2 int + v3 ns.ObjectID + v4 int + ) + v0 = 0 + v1 = 1 + v2 = 2 + v3 = 0 + v0 = ns.GetAnswer(obj126) + v4 = gvar72 + if v4 == gvar4 { + goto LABEL1 + } + if v4 == gvar5 { + goto LABEL2 + } + if v4 == gvar6 { + goto LABEL3 + } + if v4 == gvar7 { + goto LABEL4 + } + if v4 == gvar8 { + goto LABEL5 + } + if v4 == gvar9 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + if v0 != v1 { + goto LABEL8 + } + gvar72 = gvar6 + ns.SetDialog(obj126, ns.NORMAL, FarmerStart, FarmerEnd) + if flag71 { + goto LABEL9 + } + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "War05Quest8", 2) + flag71 = true +LABEL9: + goto LABEL7 + goto LABEL2 +LABEL8: + if v0 != v2 { + goto LABEL10 + } + ns.SetDialog(obj126, ns.YESNO, FarmerStart, FarmerEnd) + gvar72 = gvar5 + goto LABEL7 + goto LABEL2 +LABEL10: + if obj126 != v3 { + goto LABEL2 + } + gvar72 = gvar4 + ns.SetDialog(obj126, ns.YESNO, FarmerStart, FarmerEnd) + goto LABEL7 +LABEL2: + if v0 != v1 { + goto LABEL11 + } + gvar72 = gvar6 + ns.SetDialog(obj126, ns.NORMAL, FarmerStart, FarmerEnd) + if flag71 { + goto LABEL12 + } + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "War05Quest8", 2) + flag71 = true +LABEL12: + goto LABEL7 + goto LABEL3 +LABEL11: + if v0 != v2 { + goto LABEL13 + } + ns.SetDialog(obj126, ns.NORMAL, FarmerStart, FarmerEnd) + gvar72 = gvar9 + goto LABEL7 + goto LABEL3 +LABEL13: + if obj126 != v3 { + goto LABEL3 + } + gvar72 = gvar4 + ns.SetDialog(obj126, ns.YESNO, FarmerStart, FarmerEnd) + goto LABEL7 +LABEL3: + goto LABEL7 +LABEL4: + if !flag71 { + goto LABEL14 + } + ns.JournalEdit(ns.GetHost(), "War05Quest8", 4) + ns.PrintToAll("War05A.scr:ObjectiveComplete") +LABEL14: + ns.GiveXp(ns.GetHost(), 250) + ns.Pickup(ns.GetHost(), obj123) + ns.Delete(obj125) + EndCurse() + gvar72 = gvar8 + goto LABEL7 +LABEL5: + goto LABEL7 +LABEL6: + goto LABEL7 +LABEL7: + return +} +func HoundStart() { + ns.CreatureIdle(obj127) + ns.LookAtObject(obj127, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:HoundGreeting") +} +func HoundEnd() { + ns.SetRoamFlag(obj127, 2) + ns.Wander(obj127) +} +func FarmerWifeStart() { + var v0 int + v0 = gvar73 + if v0 == gvar10 { + goto LABEL1 + } + if v0 == gvar11 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj128, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWifeGreeting") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj128, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWifeIdle") + goto LABEL3 +LABEL3: + return +} +func FarmerWifeEnd() { + var v0 int + v0 = gvar73 + if v0 == gvar10 { + goto LABEL1 + } + if v0 == gvar11 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar73 = gvar11 + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func CaptainStart() { + var v2 int + v2 = gvar77 + if v2 == gvar24 { + goto LABEL1 + } + if v2 == gvar25 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:CaptainGreeting") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:CaptainWaiting") + goto LABEL3 +LABEL3: + return +} +func CaptainEnd() { + var v0 int + v0 = gvar77 + if v0 == gvar24 { + goto LABEL1 + } + if v0 == gvar25 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar77 = gvar25 + ns.FrameTimer(1, HorvathAppears4) + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func BartenderStart() { + ns.Frozen(obj94, true) + ns.LookAtObject(obj94, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj94) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:BartenderGreeting") +} +func BartenderEnd() { + ns.Frozen(obj94, false) + ns.LookAtDirection(obj94, ns.SE) +} +func EndCurse() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp188) + v9 = ns.GetWaypointY(wp188) + v0 = ns.GetWaypointX(wp206) + v1 = ns.GetWaypointY(wp206) + v2 = ns.GetWaypointX(wp204) + v3 = ns.GetWaypointY(wp204) + v6 = ns.GetWaypointX(wp205) + v7 = ns.GetWaypointY(wp205) + v4 = ns.GetObjectX(obj127) + v5 = ns.GetObjectY(obj127) + ns.Frozen(ns.GetHost(), true) + LetterBoxOn() + ns.AudioEvent(ns.CurePoisonCast, wp188) + ns.AudioEvent(ns.CurePoisonEffect, wp188) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(10, EndCurse2) +} +func EndCurse2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp188) + v9 = ns.GetWaypointY(wp188) + v0 = ns.GetWaypointX(wp206) + v1 = ns.GetWaypointY(wp206) + v2 = ns.GetWaypointX(wp204) + v3 = ns.GetWaypointY(wp204) + v6 = ns.GetWaypointX(wp205) + v7 = ns.GetWaypointY(wp205) + v4 = ns.GetObjectX(obj127) + v5 = ns.GetObjectY(obj127) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(7, EndCurse3) +} +func EndCurse3() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp188) + v9 = ns.GetWaypointY(wp188) + v0 = ns.GetWaypointX(wp206) + v1 = ns.GetWaypointY(wp206) + v2 = ns.GetWaypointX(wp204) + v3 = ns.GetWaypointY(wp204) + v6 = ns.GetWaypointX(wp205) + v7 = ns.GetWaypointY(wp205) + v4 = ns.GetObjectX(obj127) + v5 = ns.GetObjectY(obj127) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(3, EndCurse4) +} +func EndCurse4() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + v8 = ns.GetWaypointX(wp188) + v9 = ns.GetWaypointY(wp188) + v0 = ns.GetWaypointX(wp206) + v1 = ns.GetWaypointY(wp206) + v2 = ns.GetWaypointX(wp204) + v3 = ns.GetWaypointY(wp204) + v6 = ns.GetWaypointX(wp205) + v7 = ns.GetWaypointY(wp205) + v4 = ns.GetObjectX(obj127) + v5 = ns.GetObjectY(obj127) + ns.Effect(ns.BLUE_SPARKS, v4, v5, 0, 0) + ns.MoveObject(obj127, v0, v1) + ns.MoveObject(obj128, v4, v5) + ns.CreatureGuard(obj128, v2, v3, v6, v7, 0) + ns.CreatureGuard(obj126, v8, v9, v8, v9, 0) +} +func EndCurse5() { + if !ns.IsCaller(obj128) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LookAtObject(obj128, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj128) + ns.StartDialog(obj128, ns.GetHost()) +LABEL1: + return +} +func FrogStart() { + var v0 int + v0 = gvar75 + if v0 == gvar20 { + goto LABEL1 + } + if v0 == gvar21 { + goto LABEL2 + } + if v0 == gvar22 { + goto LABEL3 + } + if v0 == gvar23 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.LookAtObject(obj130, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogGreeting") + ns.Frozen(obj130, false) + ns.ObjectOff(obj132) + ns.ObjectOff(obj133) + ns.ObjectOff(obj134) + ns.ObjectOn(obj130) + ns.CreatureFollow(obj130, ns.GetHost()) + goto LABEL5 +LABEL2: + ns.LookAtObject(obj130, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogFollowing") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj130, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogThanks") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj130, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogIdle") + goto LABEL5 +LABEL5: + return +} +func FrogEnd() { + var v0 int + v0 = gvar75 + if v0 == gvar20 { + goto LABEL1 + } + if v0 == gvar21 { + goto LABEL2 + } + if v0 == gvar22 { + goto LABEL3 + } + if v0 == gvar23 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar75 = gvar21 + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + gvar75 = gvar23 + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func FrogGuard() { + gvar75 = gvar22 + ns.Enchant(obj130, ns.ENCHANT_INVULNERABLE, 0) + gvar86 = 1 +} +func Villager1Start() { + ns.Frozen(obj176, true) + ns.CreatureIdle(obj176) + ns.LookAtObject(obj176, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman9Talk01") +} +func Villager1End() { + ns.Frozen(obj176, false) + ns.SetRoamFlag(obj176, 32) + ns.Wander(obj176) +} +func Villager2Start() { + ns.Frozen(obj177, true) + ns.CreatureIdle(obj177) + ns.LookAtObject(obj177, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman10Talk01") +} +func Villager2End() { + ns.Frozen(obj177, false) + ns.SetRoamFlag(obj177, 32) + ns.Wander(obj177) +} +func Villager3Start() { + ns.Frozen(obj178, true) + ns.CreatureIdle(obj178) + ns.LookAtObject(obj178, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman11Talk01") +} +func Villager3End() { + ns.Frozen(obj178, false) + ns.SetRoamFlag(obj178, 32) + ns.Wander(obj178) +} +func Villager4Start() { + ns.Frozen(obj179, true) + ns.CreatureIdle(obj179) + ns.LookAtObject(obj179, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman11Talk02") +} +func Villager4End() { + ns.Frozen(obj179, false) + ns.SetRoamFlag(obj179, 32) + ns.Wander(obj179) +} +func Villager5Start() { + ns.Frozen(obj180, true) + ns.CreatureIdle(obj180) + ns.LookAtObject(obj180, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:VillagerGreeting") +} +func Villager5End() { + ns.Frozen(obj180, false) + ns.SetRoamFlag(obj180, 32) + ns.Wander(obj180) +} +func SadVillagerStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + _ = v1 + _ = v0 + v2 = gvar76 + if v2 == gvar14 { + goto LABEL1 + } + if v2 == gvar15 { + goto LABEL2 + } + if v2 == gvar16 { + goto LABEL3 + } + if v2 == gvar17 { + goto LABEL4 + } + if v2 == gvar18 { + goto LABEL5 + } + if v2 == gvar19 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.CreatureIdle(obj129) + ns.LookAtObject(obj129, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerGreeting") + goto LABEL7 +LABEL2: + ns.CreatureIdle(obj129) + ns.LookAtObject(obj129, ns.GetHost()) + if gvar86 != 1 { + goto LABEL8 + } + v0 = ns.GetWaypointX(wp201) + v1 = ns.GetWaypointY(wp201) + ns.AudioEvent(ns.CurePoisonCast, wp201) + ns.AudioEvent(ns.CurePoisonEffect, wp201) + gvar76 = gvar16 + ns.SetDialog(obj129, ns.NEXT, SadVillagerStart, SadVillagerEnd) + ns.CreatureFollow(obj130, obj129) + SadVillagerStart() + goto LABEL3 +LABEL8: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerWaiting") + goto LABEL7 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerReturned") + goto LABEL7 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerIdle") + goto LABEL7 +LABEL5: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerDead") + goto LABEL7 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerDeadIdle") + goto LABEL7 +LABEL7: + return +} +func SadVillagerEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + ) + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v0 = 0 + v1 = 1 + v2 = 2 + v3 = 0 + v0 = ns.GetAnswer(obj129) + v4 = gvar76 + if v4 == gvar14 { + goto LABEL1 + } + if v4 == gvar15 { + goto LABEL2 + } + if v4 == gvar16 { + goto LABEL3 + } + if v4 == gvar17 { + goto LABEL4 + } + if v4 == gvar18 { + goto LABEL5 + } + if v4 == gvar19 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + v0 = 1 + if 1 == 0 { + goto LABEL8 + } + gvar76 = gvar15 + ns.SetDialog(obj129, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + ns.JournalEntry(ns.GetHost(), "War05Quest9", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + goto LABEL7 +LABEL8: + v0 = 2 + if 2 == 0 { + goto LABEL9 + } + gvar76 = gvar14 + ns.SetDialog(obj129, ns.YESNO, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL9: + v0 = 0 + if 0 == 0 { + goto LABEL2 + } + gvar76 = gvar14 + ns.SetDialog(obj129, ns.YESNO, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL2: + ns.SetDialog(obj129, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL3: + gvar76 = gvar17 + ns.SetDialog(obj129, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + ns.JournalEdit(ns.GetHost(), "War05Quest9", 4) + ns.PrintToAll("War05A.scr:ObjectiveComplete") + ns.GiveXp(ns.GetHost(), 250) + ns.Drop(obj129, obj122) + ns.FrameTimer(1, FrogThanksPlayer) + ns.FrameTimer(1, SadVillagerGuard) + goto LABEL7 +LABEL4: + ns.SetDialog(obj129, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL5: + gvar76 = gvar19 + ns.Move(obj129, wp201) + ns.SetCallback(obj129, 9, DummyBump) + ns.JournalDelete(ns.GetHost(), "War05Quest9") + ns.PrintToAll("War05A.scr:ObjectiveFailed") + ns.SetDialog(obj129, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL6: + ns.CancelDialog(obj129) + goto LABEL7 +LABEL7: + return +} +func OwnVillagers() { + ns.FrameTimer(1, OwnVillagers2) +} +func OwnVillagers2() { + ns.SetOwner(ns.GetHost(), obj130) + ns.SetOwner(ns.GetHost(), obj55) + ns.SetOwner(ns.GetHost(), obj127) + ns.SetOwner(ns.GetHost(), obj94) + ns.SetOwner(ns.GetHost(), obj128) + ns.Frozen(obj176, true) + ns.Frozen(obj177, true) + ns.Frozen(obj178, true) + ns.Frozen(obj179, true) + ns.Frozen(obj180, true) + ns.Frozen(obj181, true) + ns.Frozen(obj182, true) + ns.Frozen(obj183, true) + ns.Frozen(obj184, true) + ns.Frozen(obj49, true) + ns.Frozen(obj50, true) + ns.Frozen(obj47, true) + ns.Frozen(obj48, true) + ns.Frozen(obj51, true) + ns.Wander(obj127) + ns.RetreatLevel(obj46, 0) + ns.RetreatLevel(obj47, 0) + ns.RetreatLevel(obj48, 0) + ns.RetreatLevel(obj49, 0) + ns.RetreatLevel(obj50, 0) +} +func KillCorpses2() { + ns.Damage(obj144, 0, 300, 5) + ns.Damage(obj145, 0, 300, 5) + ns.Damage(obj146, 0, 300, 5) + ns.Damage(obj147, 0, 300, 5) + ns.Damage(obj148, 0, 300, 5) + ns.Damage(obj149, 0, 300, 5) + ns.Damage(obj150, 0, 300, 5) + ns.Damage(obj151, 0, 300, 5) + ns.Damage(obj152, 0, 300, 5) + ns.Damage(obj153, 0, 300, 5) + ns.Damage(obj154, 0, 300, 5) + ns.Damage(obj155, 0, 300, 5) + ns.Damage(obj156, 0, 300, 5) + ns.Damage(obj157, 0, 300, 5) + ns.Damage(obj158, 0, 300, 5) + ns.Damage(obj159, 0, 300, 0) + ns.Damage(obj160, 0, 300, 0) + ns.Damage(obj161, 0, 300, 0) + ns.Damage(obj139, 0, 300, 0) + ns.Damage(obj44, 0, 300, 0) + ns.Damage(obj45, 0, 300, 0) + ns.Damage(obj58, 0, 300, 0) + ns.Damage(obj59, 0, 300, 0) + ns.Damage(obj60, 0, 300, 0) + ns.Damage(obj61, 0, 300, 0) + ns.Damage(obj62, 0, 300, 0) + ns.Damage(obj63, 0, 300, 0) +} +func VillagePath() { + ns.SetRoamFlag(obj176, 32) + ns.SetRoamFlag(obj177, 32) + ns.SetRoamFlag(obj178, 32) + ns.SetRoamFlag(obj179, 32) + ns.SetRoamFlag(obj180, 32) + ns.Wander(obj176) + ns.Wander(obj177) + ns.Wander(obj178) + ns.Wander(obj179) + ns.Wander(obj180) +} +func PickUpObjects() { + ns.Pickup(obj129, obj122) + ns.Pickup(obj126, obj123) + ns.Pickup(obj126, obj124) +} +func EnableElevator() { + ns.ObjectOn(obj175) +} +func DisableElevator() { + ns.ObjectOff(obj175) +} +func StartSwordsmanTrigger() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.FrameTimer(1, SwordsmanTrigger) +LABEL1: + return +} +func SwordsmanTrigger() { + ns.AggressionLevel(obj140, 0.83) + ns.AggressionLevel(obj52, 0.83) + ns.AggressionLevel(obj46, 0.83) + ns.Attack(obj46, obj140) + ns.CreatureHunt(obj46) +} +func SwordsmanTriggerB() { + gvar74 = gvar12 + ns.SetDialog(obj140, ns.NORMAL, SwordsmanStart, SwordsmanEnd) + ns.StoryPic(obj140, "Warrior8Pic") + ns.FrameTimer(1, SwordsmanTriggerC) +} +func SwordsmanTriggerC() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp186) + v1 = ns.GetWaypointY(wp186) + v2 = ns.GetWaypointX(wp187) + v3 = ns.GetWaypointY(wp187) + ns.CreatureGuard(obj140, v0, v1, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) + ns.CreatureGuard(obj52, v2, v3, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) +} +func ShopKeeperGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp218) + v1 = ns.GetWaypointY(wp218) + v2 = ns.GetWaypointX(wp219) + v3 = ns.GetWaypointY(wp219) + ns.CreatureGuard(obj95, v0, v1, v2, v3, 0) + ns.FrameTimer(1, GypsyGuard) +} +func BartenderGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp220) + v1 = ns.GetWaypointY(wp220) + v2 = ns.GetWaypointX(wp221) + v3 = ns.GetWaypointY(wp221) + ns.CreatureGuard(obj94, v0, v1, v2, v3, 0) + ns.FrameTimer(1, SadVillagerGuard) +} +func GypsyGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp216) + v1 = ns.GetWaypointY(wp216) + v2 = ns.GetWaypointX(wp217) + v3 = ns.GetWaypointY(wp217) + ns.CreatureGuard(obj93, v0, v1, v2, v3, 0) + ns.FrameTimer(1, BartenderGuard) +} +func SadVillagerGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp201) + v1 = ns.GetWaypointY(wp201) + v2 = ns.GetWaypointX(wp202) + v3 = ns.GetWaypointY(wp202) + ns.CreatureGuard(obj129, v0, v1, v2, v3, 0) +} +func OpenGates() { + ns.WallOpen(ns.Wall(88, 34)) + ns.WallOpen(ns.Wall(87, 35)) + ns.WallOpen(ns.Wall(88, 36)) + ns.WallOpen(ns.Wall(89, 35)) + ns.PrintToAll("War05A.scr:CityGatesOpen") +} +func CloseGates() { + ns.WallClose(ns.Wall(88, 34)) + ns.WallClose(ns.Wall(87, 35)) + ns.WallClose(ns.Wall(88, 36)) + ns.WallClose(ns.Wall(89, 35)) + ns.PrintToAll("War05A.scr:CityGatesClosed") +} +func PlayerDeath() { + ns.PrintToAll("War05A.scr:PlayerDeath") + ns.DeathScreen(5) +} +func MapEntry() { + ns.Music(23, 100) + ns.Frozen(ns.GetHost(), false) + LetterBoxOff() + ns.NoWallSound(false) + gvar66 = ns.Object("Con05B:HorvathAmulet") + flag87 = true + if !ns.HasItem(ns.GetHost(), gvar66) { + goto LABEL1 + } + ns.GroupDamage(gvar65, 0, 1000, 0) +LABEL1: + return +} +func NoBump() { + flag87 = false + ns.FrameTimer(90, YesBump) +} +func YesBump() { + flag87 = true +} +func BumpVillager() { +} +func LetterBoxOn() { + ns.WideScreen(true) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func FrogThanksPlayer() { + ns.StartDialog(obj130, ns.GetHost()) +} +func DummyBump() { +} +func FreePlayer() { + ns.Frozen(ns.GetHost(), false) +} +func HorvathAppears() { + ns.Frozen(ns.GetHost(), true) + LetterBoxOn() + ns.FrameTimer(30, HorvathAppears2) + ns.FrameTimer(1, VillagePath) +} +func HorvathAppears2() { + ns.Move(obj92, wp207) + ns.FrameTimer(45, HorvathAppears3) +} +func HorvathAppears3() { + ns.Frozen(obj92, true) + ns.CreatureIdle(obj92) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(obj92, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj92) + ns.StartDialog(obj92, ns.GetHost()) +} +func HorvathAppears4() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp209) + v1 = ns.GetWaypointY(wp209) + v2 = ns.GetWaypointX(wp207) + v3 = ns.GetWaypointY(wp207) + ns.Frozen(obj92, false) + ns.CreatureGuard(obj92, v0, v1, v2, v3, 0) + LetterBoxOff() + ns.FrameTimer(45, HorvathAppears5) +} +func HorvathAppears5() { + ns.Frozen(ns.GetHost(), false) +} +func AmuletCheck() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), gvar66) { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), ns.ObjectID(wp36)) // FIXME + ns.MoveWaypoint(wp33, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.TeleportIn, wp33) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp36), ns.GetWaypointY(wp36), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp36), ns.GetWaypointY(wp36), 0, 0) + ns.MoveObject(obj55, ns.GetWaypointX(wp36), ns.GetWaypointY(wp36)) + ns.Frozen(obj55, true) + ns.CreatureIdle(obj55) + ns.LookAtObject(obj55, ns.GetHost()) + ns.SetDialog(obj55, ns.NORMAL, HorvathCongratStart, HorvathCongratEnd) + ns.StartDialog(obj55, ns.GetHost()) +LABEL1: + return +} +func HorvathCongratStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con05A.scr:HorvathReturned") +} +func HorvathCongratEnd() { + ns.CancelDialog(obj55) + gvar56 = ns.GetLastItem(ns.GetHost()) + for { + if gvar56 == 0 { + goto LABEL1 + } + gvar57 = ns.GetPreviousItem(gvar56) + if gvar56 != gvar66 { + goto LABEL2 + } + ns.Delete(gvar56) + LABEL2: + gvar56 = gvar57 + } +LABEL1: + ns.Pickup(ns.GetHost(), obj41) + ns.MoveObject(obj42, ns.GetObjectX(obj55)-15, ns.GetObjectY(obj55)+15) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetObjectX(obj42), ns.GetObjectY(obj42), 0, 0) + ns.MoveObject(obj43, ns.GetObjectX(obj55)-15, ns.GetObjectY(obj55)-15) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetObjectX(obj43), ns.GetObjectY(obj43), 0, 0) + ns.JournalEdit(ns.GetHost(), "Con05Quest1", 4) + ns.GiveXp(ns.GetHost(), 1000) + ns.Blind() + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.FrameTimer(45, ChangeMaps) +} +func MapInitialize() { + gvar65 = ns.ObjectGroup("ExitEnemies") + wp30 = ns.Waypoint("WoundedRefugeeWayPoint") + wp31 = ns.Waypoint("WoundedRefugeeWayPoint2") + wp32 = ns.Waypoint("DeadGuyWP") + wp36 = ns.Waypoint("CongratWP") + wp33 = ns.Waypoint("PlayerSounds") + wp34 = ns.Waypoint("LunchOgre1WP") + wp35 = ns.Waypoint("LunchOgre2WP") + wp37 = ns.Waypoint("WellWP") + obj38 = ns.Object("WoundedRefugee") + obj39 = ns.Object("WoundedRefugee2") + obj40 = ns.Object("Antidote") + obj41 = ns.Object("InfravisionBook") + obj42 = ns.Object("ManaBottle1") + obj43 = ns.Object("ManaBottle2") + obj44 = ns.Object("Kill") + obj45 = ns.Object("Kill2") + obj46 = ns.Object("FirstOgre") + obj47 = ns.Object("LunchOgre1") + obj48 = ns.Object("LunchOgre2") + obj49 = ns.Object("TownOgre1") + obj50 = ns.Object("TownOgre2") + obj51 = ns.Object("DeadGuy") + obj52 = ns.Object("Swordsman2") + obj53 = ns.Object("Archer1") + obj54 = ns.Object("Archer2") + obj55 = ns.Object("Horvath") + obj58 = ns.Object("Bubbles1") + obj59 = ns.Object("Bubbles2") + obj60 = ns.Object("Bubbles3") + obj61 = ns.Object("Bubbles4") + obj62 = ns.Object("Bubbles5") + obj63 = ns.Object("Bubbles6") + gvar64 = ns.ObjectGroup("OgreAttackTriggers") + obj92 = ns.Object("W5Captain") + obj94 = ns.Object("W5Bartender") + obj95 = ns.Object("W5ShopKeeper") + obj93 = ns.Object("W5Gypsy") + obj119 = ns.Object("CaptainTrigger1") + obj120 = ns.Object("CaptainTrigger2") + obj121 = ns.Object("CaptainTrigger3") + obj96 = ns.Object("BartenderTrigger1") + obj97 = ns.Object("BartenderTrigger2") + obj98 = ns.Object("ShopKeeperTrigger1") + obj99 = ns.Object("ShopKeeperTrigger2") + obj100 = ns.Object("GypsyTrigger1") + obj101 = ns.Object("GypsyTrigger2") + obj102 = ns.Object("GypsyTrigger3") + obj103 = ns.Object("GypsyTrigger4") + obj104 = ns.Object("GypsyTrigger5") + obj105 = ns.Object("GypsyTrigger6") + obj106 = ns.Object("GypsyTrigger7") + obj107 = ns.Object("GypsyTrigger8") + obj108 = ns.Object("GypsyTrigger9") + obj109 = ns.Object("GypsyEndTrigger1") + obj110 = ns.Object("GypsyEndTrigger2") + obj111 = ns.Object("GypsyEndTrigger3") + obj112 = ns.Object("GypsyEndTrigger4") + obj113 = ns.Object("GypsyEndTrigger5") + obj114 = ns.Object("GypsyEndTrigger6") + obj115 = ns.Object("GypsyEndTrigger7") + obj116 = ns.Object("GypsyEndTrigger8") + obj117 = ns.Object("GypsyEndTrigger9") + obj140 = ns.Object("W5Swordsman") + obj141 = ns.Object("W5Swordsman2") + wp142 = int(ns.Object("SwordsmanTrigger1")) + wp143 = int(ns.Object("SwordsmanTrigger2")) + obj139 = ns.Object("KeyGuy") + obj136 = ns.Object("W5Drunk1") + obj137 = ns.Object("W5Drunk2") + obj138 = ns.Object("W5Drunk3") + obj122 = ns.Object("SadVillagerReward") + obj123 = ns.Object("FarmerReward1") + obj124 = ns.Object("FarmerReward2") + obj126 = ns.Object("W5Farmer") + obj127 = ns.Object("W5Hound") + obj128 = ns.Object("W5FarmerWife") + obj129 = ns.Object("W5SadVillager") + obj130 = ns.Object("W5Frog") + obj131 = ns.Object("FrogTrigger") + obj132 = ns.Object("FrogTrigger1") + obj133 = ns.Object("FrogTrigger2") + obj134 = ns.Object("FrogTrigger3") + obj135 = ns.Object("FrogTrigger4") + obj125 = ns.Object("FarmerStaff") + obj88 = ns.Object("AutoSave1Trigger") + obj89 = ns.Object("AutoSave2Trigger") + obj90 = ns.Object("AutoSave3Trigger") + obj91 = ns.Object("AutoSave4Trigger") + obj144 = ns.Object("Corpse1") + obj145 = ns.Object("Corpse2") + obj146 = ns.Object("Corpse3") + obj147 = ns.Object("Corpse4") + obj148 = ns.Object("Corpse5") + obj149 = ns.Object("Corpse6") + obj150 = ns.Object("Corpse7") + obj151 = ns.Object("Corpse8") + obj152 = ns.Object("Corpse9") + obj153 = ns.Object("Corpse10") + obj154 = ns.Object("Corpse11") + obj155 = ns.Object("Corpse12") + obj156 = ns.Object("Corpse13") + obj157 = ns.Object("Corpse14") + obj158 = ns.Object("Corpse15") + obj118 = ns.Object("JackLine5Trigger") + obj159 = ns.Object("OgreCorpse1") + obj160 = ns.Object("OgreCorpse2") + obj161 = ns.Object("OgreCorpse3") + obj175 = ns.Object("EntranceElevator") + obj162 = ns.Object("Ogre1") + obj163 = ns.Object("Ogre2") + obj164 = ns.Object("Ogre3") + obj165 = ns.Object("Ogre4") + obj166 = ns.Object("Ogre5") + obj167 = ns.Object("Ogre6") + obj168 = ns.Object("Ogre7") + obj169 = ns.Object("Ogre8") + obj170 = ns.Object("Ogre9") + obj170 = ns.Object("Ogre10") + obj170 = ns.Object("Ogre11") + obj170 = ns.Object("Ogre12") + obj170 = ns.Object("Ogre13") + obj193 = ns.Object("HouseDoor1") + obj194 = ns.Object("HouseDoor1") + obj195 = ns.Object("CryptDoor1") + obj196 = ns.Object("CryptDoor2") + obj176 = ns.Object("W5Villager1") + obj177 = ns.Object("W5Villager2") + obj178 = ns.Object("W5Villager3") + obj179 = ns.Object("W5Villager4") + obj180 = ns.Object("W5Villager5") + obj181 = ns.Object("W5Villager6") + obj182 = ns.Object("W5Villager7") + obj183 = ns.Object("W5Villager8") + obj184 = ns.Object("W5Villager9") + wp187 = ns.Waypoint("Swordsman2WayPoint") + wp186 = ns.Waypoint("SwordsmanWayPoint") + wp142 = int(ns.Waypoint("SwordsmanTrigger1")) + wp143 = int(ns.Waypoint("SwordsmanTrigger2")) + wp207 = ns.Waypoint("HorvathWayPoint") + wp208 = ns.Waypoint("HorvathWayPoint2") + wp209 = ns.Waypoint("HorvathAppears") + wp188 = ns.Waypoint("FarmerWayPoint") + wp189 = ns.Waypoint("Farmer2WayPoint") + wp204 = ns.Waypoint("FarmerWifeWayPoint") + wp205 = ns.Waypoint("FarmerWife2WayPoint") + wp190 = ns.Waypoint("HoundWayPoint") + wp206 = ns.Waypoint("Hound2WayPoint") + wp203 = ns.Waypoint("WoundedVillagerWayPoint") + wp201 = ns.Waypoint("SadVillagerWayPoint") + wp202 = ns.Waypoint("SadVillagerWayPoint2") + wp191 = ns.Waypoint("FrogWayPoint1") + wp192 = ns.Waypoint("FrogWayPoint2") + wp210 = ns.Waypoint("Villager1Goal") + wp211 = ns.Waypoint("Villager2Goal") + wp212 = ns.Waypoint("Villager3Goal") + wp213 = ns.Waypoint("Villager4Goal") + wp214 = ns.Waypoint("Villager5Goal") + wp216 = ns.Waypoint("GypsyWayPoint") + wp217 = ns.Waypoint("GypsyWayPoint2") + wp218 = ns.Waypoint("ShopKeeperWayPoint") + wp219 = ns.Waypoint("ShopKeeperWayPoint2") + wp220 = ns.Waypoint("BartenderWayPoint") + wp221 = ns.Waypoint("BartenderWayPoint2") + wp215 = ns.Waypoint("PlayerStartWayPoint") + ns.SetDialog(obj136, ns.NORMAL, DrunkStart, DrunkEnd) + ns.StoryPic(obj136, "Townsman3Pic") + ns.SetDialog(obj137, ns.NORMAL, DrunkStart, DrunkEnd) + ns.StoryPic(obj137, "Townsman2Pic") + ns.SetDialog(obj138, ns.NORMAL, DrunkStart, DrunkEnd) + ns.StoryPic(obj138, "Townsman1Pic") + ns.SetDialog(obj126, ns.YESNO, FarmerStart, FarmerEnd) + ns.StoryPic(obj126, "ThaviusPic") + ns.SetDialog(obj127, ns.NORMAL, HoundStart, HoundEnd) + ns.StoryPic(obj127, "WolfPic") + ns.SetDialog(obj129, ns.YESNO, SadVillagerStart, SadVillagerEnd) + ns.StoryPic(obj129, "Townsman3Pic") + ns.SetDialog(obj130, ns.NORMAL, FrogStart, FrogEnd) + ns.StoryPic(obj130, "FrogPic") + ns.SetDialog(obj92, ns.NORMAL, CaptainStart, CaptainEnd) + ns.StoryPic(obj92, "AirshipCaptainPic") + ns.SetDialog(obj128, ns.NORMAL, FarmerWifeStart, FarmerWifeEnd) + ns.StoryPic(obj128, "MaidenPic") + ns.SetDialog(obj55, ns.NORMAL, HorvathStart, HorvathEnd) + ns.StoryPic(obj55, "HorvathPic") + ns.Frozen(obj130, true) + DisableVillagers() + KillCorpses() + LockDoors() + OwnVillagers() + HoundEnd() + PickUpObjects() + EnableElevator() + ns.FrameTimer(90, DisableElevator) + ShopKeeperGuard() + ns.StartupScreen(5) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func FrogReturned() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + if !ns.IsCaller(obj130) { + goto LABEL1 + } + v0 = ns.GetWaypointX(wp191) + v1 = ns.GetWaypointY(wp191) + v2 = ns.GetWaypointX(wp192) + v3 = ns.GetWaypointY(wp192) + ns.ObjectOff(obj131) + ns.CreatureGuard(obj130, v0, v1, v2, v3, 0) + gvar76 = gvar15 +LABEL1: + return +} +func FrogDeath() { + gvar86 = 2 + gvar76 = gvar18 + ns.CancelDialog(obj130) +} +func AutoSave1() { + ns.AutoSave() + ns.ObjectOff(obj88) +} +func AutoSave2() { + ns.AutoSave() + ns.ObjectOff(obj89) +} +func AutoSave3() { + ns.AutoSave() + ns.FrameTimer(1, VillagePath) + ns.ObjectOff(obj90) +} +func AutoSave4() { + ns.AutoSave() + ns.ObjectOff(obj91) +} +func SecretFound() { + ns.PrintToAll("War05A.scr:Secret") + ns.MoveWaypoint(wp33, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp33) + ns.GiveXp(ns.GetHost(), 250) +} +func Hint() { + ns.PrintToAll("Journal:War05Hint1") + ns.JournalEntry(ns.GetHost(), "War05Hint1", 4) +} +func OgreAttackStart() { + ns.ObjectGroupOff(gvar64) + ns.Music(26, 100) + UnfreezeAll() + ns.Frozen(obj51, false) + ns.Frozen(obj47, false) + ns.Frozen(obj48, false) + ns.Attack(obj51, obj47) + ns.Attack(obj47, obj51) + ns.Attack(obj48, obj51) +} +func DeadGuyArrive() { + if !ns.IsCaller(obj51) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj51, true) + ns.Frozen(obj47, true) + ns.Frozen(obj48, true) + ns.CreatureIdle(obj51) + ns.CreatureIdle(obj47) + ns.CreatureIdle(obj48) + ns.LookAtObject(obj47, obj51) + ns.LookAtObject(obj51, obj48) + ns.LookAtObject(obj48, obj51) + ns.Chat(obj48, "Con05:OgreKingTalk06") + ns.SecondTimer(2, OgresAttackDeadGuy) +LABEL1: + return +} +func OgresAttackDeadGuy() { + ns.Frozen(obj51, false) + ns.Frozen(obj47, false) + ns.Frozen(obj48, false) + ns.Attack(obj51, obj48) + ns.Attack(obj47, obj51) + ns.Attack(obj48, obj51) +} +func DeadGuyDie() { + ns.AggressionLevel(obj47, 0.83) + ns.AggressionLevel(obj48, 0.83) +} +func LunchOgreReport() { + if !(ns.CurrentHealth(obj51) > 0) { + goto LABEL1 + } + ns.Attack(ns.GetTrigger(), obj51) +LABEL1: + return +} +func LunchOgre1Trigger() { + if !ns.IsCaller(obj47) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ivar222 += 1 + ns.AggressionLevel(obj47, 0.83) +LABEL1: + return +} +func LunchOgre2Trigger() { + if !ns.IsCaller(obj48) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ivar222 += 1 + ns.AggressionLevel(obj48, 0.83) +LABEL1: + return +} +func TownOgre2Die() { + ns.CreatureGuard(obj126, ns.GetObjectX(obj126), ns.GetObjectY(obj126), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +} +func UnfreezeAll() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj176, false) + ns.Frozen(obj177, false) + ns.Frozen(obj178, false) + ns.Frozen(obj179, false) + ns.Frozen(obj180, false) + ns.Frozen(obj181, false) + ns.Frozen(obj182, false) + ns.Frozen(obj183, false) + ns.Frozen(obj184, false) + ns.Frozen(obj49, false) + ns.Frozen(obj50, false) + ns.Frozen(obj126, false) +} +func GoAway() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + if !(ns.CurrentHealth(ns.GetCaller()) > 0) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func StayAway() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if r1 { + goto LABEL1 + } + if !(ns.CurrentHealth(ns.GetCaller()) > 0) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, ns.Waypoint("WellWP")) +} +func CrapFile() { +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapEntry": + MapEntry() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con05a/dummy_test.go b/examples/con05a/dummy_test.go new file mode 100644 index 0000000..d43de5a --- /dev/null +++ b/examples/con05a/dummy_test.go @@ -0,0 +1,6 @@ +package con05a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con05b/con05b.go b/examples/con05b/con05b.go new file mode 100644 index 0000000..03bab6e --- /dev/null +++ b/examples/con05b/con05b.go @@ -0,0 +1,207 @@ +package con05b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + gvar5 ns.WallGroupID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + wp12 ns.WaypointID + wp13 ns.WaypointID + gvar14 int + gvar15 int + gvar16 int + flag17 bool + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + gvar24 ns.ObjectGroupID + gvar25 ns.WallGroupID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID +) + +func init() { + gvar14 = 0 + gvar15 = 1 + gvar16 = gvar14 + flag17 = false +} +func StopElevator() { + ns.ObjectOff(obj4) + ns.FrameTimer(60, LowerKeyProtectWalls) +} +func LowerKeyProtectWalls() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar5) + ns.NoWallSound(false) +} +func RaiseKey() { + ns.ObjectOn(obj4) + ns.FrameTimer(5, StopElevator) +} +func UnlockMainGates() { + ns.ObjectOff(obj10) + ns.UnlockDoor(obj6) + ns.UnlockDoor(obj7) +} +func OpenKingGate() { + ns.ObjectOff(obj11) + ns.UnlockDoor(obj8) + ns.UnlockDoor(obj9) +} +func SecretFound() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp13, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp13) + ns.GiveXp(ns.GetHost(), 40) +} +func PickupAmulet() { + ns.GiveXp(ns.GetHost(), 50) + ns.AudioEvent(ns.JournalEntryAdd, wp12) +} +func CallForGuards() { + ns.Frozen(obj21, true) + ns.CreatureIdle(obj21) + ns.SetDialog(obj21, ns.NEXT, KingStart, KingEnd) + ns.StoryPic(obj21, "OgreWarlordPic") + ns.StartDialog(obj21, ns.GetHost()) +} +func ProtectTheKing() { + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) + ns.EnchantOff(obj21, ns.ENCHANT_INVULNERABLE) + ns.ClearOwner(obj21) + ns.Frozen(obj21, false) + ns.ObjectOn(obj22) + ns.ObjectOn(obj23) + ns.AggressionLevel(obj21, 0.83) + ns.MoveObject(obj22, ns.GetWaypointX(wp27), ns.GetWaypointY(wp27)) + ns.MoveObject(obj23, ns.GetWaypointX(wp28), ns.GetWaypointY(wp28)) + ns.Wander(obj22) + ns.Wander(obj23) +} +func KingStart() { + var v0 int + v0 = gvar16 + if v0 == gvar14 { + goto LABEL1 + } + if v0 == gvar15 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con05:OgreTalk07") + ns.LookAtObject(obj21, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj21) + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con05:OgreTalk08") + goto LABEL3 +LABEL3: + return +} +func KingEnd() { + var v0 int + v0 = gvar16 + if v0 == gvar14 { + goto LABEL1 + } + if v0 == gvar15 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar16 = gvar15 + ns.StartDialog(obj21, ns.GetHost()) + goto LABEL3 +LABEL2: + ns.CancelDialog(obj21) + ns.CreatureGuard(obj21, ns.GetWaypointX(wp26), ns.GetWaypointY(wp26), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 500) + ProtectTheKing() + goto LABEL3 +LABEL3: + return +} +func LetterBoxOn() { + ns.WideScreen(true) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func PlayerDeath() { + ns.DeathScreen(5) +} +func MapInitialize() { + obj6 = ns.Object("MainGate1") + obj7 = ns.Object("MainGate2") + obj18 = ns.Object("TownGate1") + obj19 = ns.Object("TownGate2") + obj8 = ns.Object("KingDoor1") + obj9 = ns.Object("KingDoor2") + obj10 = ns.Object("MainGateSwitch") + obj11 = ns.Object("KingDoorSwitch") + obj21 = ns.Object("OgreKing") + obj20 = ns.Object("CallForGuardsTrigger") + obj4 = ns.Object("KeyElevator") + obj22 = ns.Object("Guard1") + obj23 = ns.Object("Guard2") + gvar24 = ns.ObjectGroup("KingTriggerGroup") + gvar25 = ns.WallGroup("LordSafetyWalls") + gvar5 = ns.WallGroup("KeyProtectWalls") + wp26 = ns.Waypoint("OgreKingWaypoint") + wp27 = ns.Waypoint("Guard1WP") + wp28 = ns.Waypoint("Guard2WP") + wp12 = ns.Waypoint("AmuletSoundWP") + wp13 = ns.Waypoint("PlayerSounds") + ns.LockDoor(obj8) + ns.LockDoor(obj9) + ns.LockDoor(obj6) + ns.LockDoor(obj7) +} +func Activate() { + var v0 bool + _ = v0 + v0 = true + ns.ObjectGroupOff(gvar24) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar25) + ns.NoWallSound(false) + ns.ObjectOn(obj20) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(1, LetterBoxOn) + ns.Move(obj21, wp26) +} +func PummelPlayer() { + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +} +func MapEntry() { + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.Music(7, 100) +} +func FadeOut() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.Blind() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con05b/dummy_test.go b/examples/con05b/dummy_test.go new file mode 100644 index 0000000..1f421a6 --- /dev/null +++ b/examples/con05b/dummy_test.go @@ -0,0 +1,6 @@ +package con05b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con05c/con05c.go b/examples/con05c/con05c.go new file mode 100644 index 0000000..96028de --- /dev/null +++ b/examples/con05c/con05c.go @@ -0,0 +1,521 @@ +package con05c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.WallGroupID + gvar5 ns.WallGroupID + gvar6 ns.WallGroupID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + wp44 ns.WaypointID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + gvar52 ns.ObjectGroupID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + gvar57 int + gvar58 ns.WallGroupID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + obj80 ns.ObjectID + obj81 ns.ObjectID + obj82 ns.ObjectID + obj83 ns.ObjectID + obj84 ns.ObjectID + obj85 ns.ObjectID + obj86 ns.ObjectID + obj87 ns.ObjectID + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + gvar95 ns.WallGroupID + wp96 ns.WaypointID + wp97 ns.WaypointID + wp98 ns.WaypointID + wp99 ns.WaypointID + wp100 ns.WaypointID + wp101 ns.WaypointID + wp102 ns.WaypointID + wp103 ns.WaypointID + wp104 ns.WaypointID + wp105 ns.WaypointID + wp106 ns.WaypointID + wp107 ns.WaypointID + wp108 ns.WaypointID + wp109 ns.WaypointID + wp110 ns.WaypointID + wp111 ns.WaypointID + wp112 ns.WaypointID + wp113 ns.WaypointID + wp114 ns.WaypointID + wp115 ns.WaypointID + wp116 ns.WaypointID + wp117 ns.WaypointID + wp118 ns.WaypointID + wp119 ns.WaypointID + gvar120 int + obj121 ns.ObjectID + obj122 ns.ObjectID + obj123 ns.ObjectID + obj124 ns.ObjectID + wp125 ns.WaypointID + wp126 ns.WaypointID + obj127 ns.ObjectID + obj128 ns.ObjectID + obj129 ns.ObjectID + obj130 ns.ObjectID + wp131 ns.WaypointID + wp132 ns.WaypointID +) + +func DisableElevators() { + ns.ObjectOff(obj24) + ns.ObjectOff(obj25) + ns.ObjectOff(obj26) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + ns.ObjectOff(obj29) +} +func EnableSkeletons() { + ns.AggressionLevel(obj30, 0.83) + ns.AggressionLevel(obj31, 0.83) + ns.AggressionLevel(obj32, 0.83) + ns.AggressionLevel(obj33, 0.83) + ns.AggressionLevel(obj34, 0.83) + ns.AggressionLevel(obj35, 0.83) +} +func BreakWalls1() { + ns.WallGroupOpen(gvar4) +} +func EnableElevators1() { + ns.ObjectOn(obj24) + ns.ObjectOn(obj25) + ns.ObjectOn(obj26) + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) + ns.ObjectOn(obj29) + ns.FrameTimer(20, SkeletonGoal) + EnableSkeletons() +} +func SkeletonGoal() { + ns.Move(obj30, wp51) + ns.Move(obj31, wp51) + ns.Move(obj32, wp51) + ns.Move(obj33, wp51) + ns.Move(obj34, wp51) + ns.Move(obj35, wp51) +} +func EndTrap1() { + ns.Move(obj9, wp41) + ns.Move(obj10, wp42) + ns.Move(obj11, wp43) + ns.Move(obj12, wp44) + ns.ObjectOff(obj36) + ns.AudioEvent(ns.EarthRumbleMinor, wp37) + ns.AudioEvent(ns.SecretWallSecret, wp37) +} +func OpenGates() { + ns.WallOpen(ns.Wall(96, 208)) + ns.WallOpen(ns.Wall(95, 209)) + ns.WallOpen(ns.Wall(94, 210)) +} +func CloseBlocks() { + ns.Move(obj7, wp45) + ns.Move(obj8, wp46) + ns.AudioEvent(ns.BoulderMove, wp38) + ns.AudioEvent(ns.EarthRumbleMinor, wp38) + ns.AudioEvent(ns.SecretWallOpen, wp38) + ns.AudioEvent(ns.StoneBlockMove, wp38) +} +func OpenBlocks() { + ns.ObjectOff(ns.GetTrigger()) + ns.Move(obj7, wp39) + ns.Move(obj8, wp40) + ns.AudioEvent(ns.BoulderMove, wp38) + ns.AudioEvent(ns.EarthRumbleMinor, wp38) + ns.AudioEvent(ns.SecretWallOpen, wp38) + ns.AudioEvent(ns.StoneBlockMove, wp38) +} +func Trap1() { + ns.ObjectOff(obj13) + ns.ObjectOff(obj14) + ns.ObjectOff(obj15) + ns.ObjectOff(obj16) + ns.ObjectOff(obj17) + ns.Move(obj9, wp47) + ns.Move(obj10, wp48) + ns.Move(obj11, wp49) + ns.Move(obj12, wp50) + ns.AudioEvent(ns.EarthRumbleMajor, wp50) + ns.SecondTimer(1, BreakWalls1) + ns.SecondTimer(2, EnableElevators1) + ns.Music(27, 100) +} +func CloseBlocks2() { + ns.Move(obj7, wp45) + ns.Move(obj8, wp46) + ns.Move(obj9, wp47) + ns.Move(obj10, wp48) +} +func LockCellDoors() { + ns.LockDoor(obj68) + ns.LockDoor(obj69) + ns.LockDoor(obj70) + ns.LockDoor(obj71) + ns.LockDoor(obj72) + ns.LockDoor(obj73) + ns.LockDoor(obj74) + ns.LockDoor(obj75) + ns.LockDoor(obj76) + ns.LockDoor(obj77) + ns.LockDoor(obj78) + ns.LockDoor(obj79) +} +func EnableSpikes() { + ns.Move(obj81, wp108) + ns.Move(obj82, wp109) + ns.Move(obj83, wp110) + ns.Move(obj84, wp111) + ns.Move(obj85, wp112) + ns.Move(obj86, wp113) + ns.Move(obj87, wp114) + ns.Move(obj88, wp115) + ns.Move(obj89, wp116) + ns.Move(obj90, wp117) + ns.Move(obj91, wp118) + ns.Move(obj92, wp119) + ns.FrameTimer(50, DisableSpikes) +} +func DisableSpikes() { + ns.Move(obj81, wp96) + ns.Move(obj82, wp97) + ns.Move(obj83, wp98) + ns.Move(obj84, wp99) + ns.Move(obj85, wp100) + ns.Move(obj86, wp101) + ns.Move(obj87, wp102) + ns.Move(obj88, wp103) + ns.Move(obj89, wp104) + ns.Move(obj90, wp105) + ns.Move(obj91, wp106) + ns.Move(obj92, wp107) + ns.FrameTimer(50, EnableSpikes) +} +func EnableGears() { + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.SecondTimer(2, DisableGears) +} +func DisableGears() { + ns.ObjectOff(obj59) + ns.ObjectOff(obj60) +} +func KillSkeleton7() { + ns.Damage(obj67, 0, 1000, 0) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func PlayerDeath() { + ns.Blind() + ns.FrameTimer(30, ChapterFail2) +} +func SpikeNoise1() { + ns.AudioEvent(ns.EarthRumbleMajor, wp117) + ns.AudioEvent(ns.EarthRumbleMajor, wp111) + ns.FrameTimer(60, SpikeNoise1) +} +func MapInitialize() { + wp131 = ns.Waypoint("Secret01WP") + wp132 = ns.Waypoint("Secret02WP") + gvar52 = ns.ObjectGroup("BatEntryGroup") + obj53 = ns.Object("Bear1") + obj93 = ns.Object("Ogre1") + obj94 = ns.Object("Ogre2") + gvar58 = ns.WallGroup("ScorpionWallGroup") + obj7 = ns.Object("Block1") + obj8 = ns.Object("Block2") + obj9 = ns.Object("Block3") + obj10 = ns.Object("Block4") + obj11 = ns.Object("Block5") + obj12 = ns.Object("Block6") + obj18 = ns.Object("BlockMover1") + obj19 = ns.Object("BlockMover2") + obj20 = ns.Object("BlockMover3") + obj21 = ns.Object("BlockMover4") + obj22 = ns.Object("BlockMover5") + obj23 = ns.Object("BlockMover6") + obj127 = ns.Object("SilverKeyTrigger1") + obj128 = ns.Object("SilverKeyTrigger2") + obj129 = ns.Object("SilverKeyTrigger3") + obj130 = ns.Object("SilverKeyTrigger4") + gvar95 = ns.WallGroup("SilverKeyWallGroup") + obj121 = ns.Object("Grunt1") + obj122 = ns.Object("Grunt2") + obj123 = ns.Object("Grunt3") + obj124 = ns.Object("Grunt4") + gvar4 = ns.WallGroup("AmbushWallGroup") + obj61 = ns.Object("Pit1") + obj62 = ns.Object("Pit2") + obj63 = ns.Object("Pit3") + obj64 = ns.Object("Pit4") + obj65 = ns.Object("Pit5") + obj66 = ns.Object("Pit6") + obj24 = ns.Object("Elevator1") + obj25 = ns.Object("Elevator2") + obj26 = ns.Object("Elevator3") + obj27 = ns.Object("Elevator4") + obj28 = ns.Object("Elevator5") + obj29 = ns.Object("Elevator6") + obj30 = ns.Object("Skeleton1") + obj31 = ns.Object("Skeleton2") + obj32 = ns.Object("Skeleton3") + obj33 = ns.Object("Skeleton4") + obj34 = ns.Object("Skeleton5") + obj35 = ns.Object("Skeleton6") + obj67 = ns.Object("Skeleton7") + obj36 = ns.Object("EndTrapTrigger") + obj59 = ns.Object("Gear1") + obj60 = ns.Object("Gear2") + obj13 = ns.Object("Plate1") + obj14 = ns.Object("Plate2") + obj15 = ns.Object("Plate3") + obj16 = ns.Object("Plate4") + obj17 = ns.Object("Plate5") + obj81 = ns.Object("Spike1") + obj82 = ns.Object("Spike2") + obj83 = ns.Object("Spike3") + obj84 = ns.Object("Spike4") + obj85 = ns.Object("Spike5") + obj86 = ns.Object("Spike6") + obj87 = ns.Object("Spike7") + obj88 = ns.Object("Spike8") + obj89 = ns.Object("Spike9") + obj90 = ns.Object("Spike10") + obj91 = ns.Object("Spike11") + obj92 = ns.Object("Spike12") + obj68 = ns.Object("CellDoor1") + obj69 = ns.Object("CellDoor2") + obj70 = ns.Object("CellDoor3") + obj71 = ns.Object("CellDoor4") + obj72 = ns.Object("CellDoor5") + obj73 = ns.Object("CellDoor6") + obj74 = ns.Object("CellDoor7") + obj75 = ns.Object("CellDoor8") + obj76 = ns.Object("CellDoor9") + obj77 = ns.Object("CellDoor10") + obj78 = ns.Object("CellDoor11") + obj79 = ns.Object("CellDoor12") + obj80 = ns.Object("CellLever") + wp39 = ns.Waypoint("BlockOpen1") + wp45 = ns.Waypoint("BlockClosed1") + wp40 = ns.Waypoint("BlockOpen2") + wp46 = ns.Waypoint("BlockClosed2") + wp41 = ns.Waypoint("BlockOpen3") + wp47 = ns.Waypoint("BlockClosed3") + wp42 = ns.Waypoint("BlockOpen4") + wp48 = ns.Waypoint("BlockClosed4") + wp43 = ns.Waypoint("BlockOpen5") + wp49 = ns.Waypoint("BlockClosed5") + wp44 = ns.Waypoint("BlockOpen6") + wp50 = ns.Waypoint("BlockClosed6") + wp125 = ns.Waypoint("Gates1WP") + wp126 = ns.Waypoint("Gates2WP") + gvar5 = ns.WallGroup("Gates1") + gvar6 = ns.WallGroup("Gates2") + wp38 = ns.Waypoint("BlockAudio1WP") + wp96 = ns.Waypoint("Spike1Open") + wp97 = ns.Waypoint("Spike2Open") + wp98 = ns.Waypoint("Spike3Open") + wp99 = ns.Waypoint("Spike4Open") + wp100 = ns.Waypoint("Spike5Open") + wp101 = ns.Waypoint("Spike6Open") + wp102 = ns.Waypoint("Spike7Open") + wp103 = ns.Waypoint("Spike8Open") + wp104 = ns.Waypoint("Spike9Open") + wp105 = ns.Waypoint("Spike10Open") + wp106 = ns.Waypoint("Spike11Open") + wp107 = ns.Waypoint("Spike12Open") + wp108 = ns.Waypoint("Spike1Closed") + wp109 = ns.Waypoint("Spike2Closed") + wp110 = ns.Waypoint("Spike3Closed") + wp111 = ns.Waypoint("Spike4Closed") + wp112 = ns.Waypoint("Spike5Closed") + wp113 = ns.Waypoint("Spike6Closed") + wp114 = ns.Waypoint("Spike7Closed") + wp115 = ns.Waypoint("Spike8Closed") + wp116 = ns.Waypoint("Spike9Closed") + wp117 = ns.Waypoint("Spike10Closed") + wp118 = ns.Waypoint("Spike11Closed") + wp119 = ns.Waypoint("Spike12Closed") + wp51 = ns.Waypoint("SkeletonGoal") + wp37 = ns.Waypoint("EndTrapAudioWP") + OpenGates() + CloseBlocks() + LockCellDoors() + KillSkeleton7() + ns.Move(obj11, wp49) + ns.Move(obj12, wp50) + EnableSpikes() +} +func HostilizeMe() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func BatsHostilize() { + ns.GroupAggressionLevel(gvar52, 0.83) +} +func BearHostilize() { + ns.AggressionLevel(obj53, 0.83) +} +func OgresHostilize() { + ns.AggressionLevel(obj93, 0.83) + ns.AggressionLevel(obj94, 0.83) +} +func DestroyWalls() { + ns.WallGroupBreak(gvar58) + ns.Attack(obj54, ns.GetHost()) + ns.Attack(obj55, ns.GetHost()) + ns.Attack(obj56, ns.GetHost()) +} +func OpenCellDoors() { + ns.UnlockDoor(obj68) + ns.UnlockDoor(obj69) + ns.UnlockDoor(obj70) + ns.UnlockDoor(obj71) + ns.UnlockDoor(obj72) + ns.UnlockDoor(obj73) + ns.UnlockDoor(obj74) + ns.UnlockDoor(obj75) + ns.UnlockDoor(obj76) + ns.UnlockDoor(obj77) + ns.UnlockDoor(obj78) + ns.UnlockDoor(obj79) + ns.ObjectOff(obj80) + EnableGears() +} +func ToggleGates1() { + ns.AudioEvent(ns.FireBallExplode, wp125) + ns.WallGroupOpen(gvar5) +} +func ToggleGates2() { + ns.AudioEvent(ns.FireBallExplode, wp126) + ns.WallGroupOpen(gvar6) +} +func ChapterFail2() { + ns.EnchantOff(ns.GetHost(), ns.ENCHANT_INVULNERABLE) + ns.DeathScreen(5) +} +func SilverKeyTrap() { + ns.ObjectOff(obj127) + ns.ObjectOff(obj128) + ns.ObjectOff(obj129) + ns.ObjectOff(obj130) + ns.WallGroupBreak(gvar95) + ns.AggressionLevel(obj121, 0.83) + ns.AggressionLevel(obj122, 0.83) + ns.AggressionLevel(obj123, 0.83) + ns.AggressionLevel(obj124, 0.83) +} +func MapEntry() { + ns.UnBlind() + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) +} +func PlaySubMusic() { + ns.Music(20, 100) +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func Secret01() { + ns.AudioEvent(ns.SecretFound, wp131) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func Secret02() { + ns.AudioEvent(ns.SecretFound, wp132) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con05c/dummy_test.go b/examples/con05c/dummy_test.go new file mode 100644 index 0000000..f8bfe77 --- /dev/null +++ b/examples/con05c/dummy_test.go @@ -0,0 +1,6 @@ +package con05c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con06a/con06a.go b/examples/con06a/con06a.go new file mode 100644 index 0000000..ca9f8f0 --- /dev/null +++ b/examples/con06a/con06a.go @@ -0,0 +1,601 @@ +package con06a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + wp11 ns.WaypointID + gvar12 ns.ObjectGroupID + gvar13 ns.ObjectGroupID + gvar14 ns.ObjectGroupID + gvar15 ns.ObjectGroupID + flag16 bool + flag17 bool + obj18 ns.ObjectID + obj19 ns.ObjectID + wp20 ns.WaypointID + gvar21 ns.WallGroupID + flag22 bool + ivar23 int + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + gvar34 ns.ObjectGroupID + flag35 bool + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + gvar44 ns.ObjectGroupID + wp45 ns.WaypointID + wp46 ns.WaypointID + obj47 ns.ObjectID + ivar48 int + flag49 bool + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + wp62 ns.WaypointID + gvar63 ns.ObjectGroupID +) + +func init() { + flag16 = false + flag17 = true + flag22 = false + ivar23 = 0 + flag35 = true + flag49 = true +} +func KillTownie() { + ns.AudioEvent(ns.HumanMaleDie, wp11) + ns.MoveObject(obj4, ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.MoveObject(obj7, 4071, 1828) + ns.MoveObject(obj6, 3999, 1844) +} +func townieTalk1Start() { + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.UrchinRecognize, "War06a:TownspeopleSpeak3") +} +func townieTalk1End() { + ns.ObjectGroupOn(gvar14) + ns.CancelDialog(obj4) + ns.Delete(obj5) + ns.FrameTimer(1, KillTownie) +} +func EnableSkeletonGroup() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar13) +} +func captainVanishes() { + ns.ObjectOff(ns.GetTrigger()) + ns.Delete(obj10) + ns.Delete(obj8) + ns.Delete(obj9) + ns.ObjectGroupOn(gvar12) + EnableSkeletonGroup() +} +func GuardiansAttack() { + ns.AggressionLevel(obj24, 0.83) + ns.Attack(obj24, obj18) + ns.AggressionLevel(obj25, 0.83) + ns.Attack(obj25, obj18) + ns.AggressionLevel(obj26, 0.83) + ns.Attack(obj26, obj19) + ns.AggressionLevel(obj18, 0.83) + ns.Attack(obj18, obj24) + ns.AggressionLevel(obj19, 0.83) + ns.Attack(obj19, obj26) +} +func Guardian01DialogStart() { + ns.TellStory(ns.SwordsmanHurt, "Con06a:CityGuardSpeak1") +} +func Guardian01DialogEnd() { + ns.CancelDialog(obj18) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar21) + ns.NoWallSound(false) + ns.BecomePet(obj18) + ns.BecomePet(obj19) + ns.CreatureFollow(obj18, ns.GetHost()) + ns.CreatureFollow(obj19, ns.GetHost()) + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.ObjectGroupOn(gvar15) + ns.ObjectGroupOn(gvar13) +} +func Zombie1Rise() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(obj24) + v1 = ns.GetObjectY(obj24) + ns.RaiseZombie(obj24) + ns.MoveWaypoint(wp20, v0, v1) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("AudioOrigin")) +} +func Zombie2Rise() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(obj25) + v1 = ns.GetObjectY(obj25) + ns.RaiseZombie(obj25) + ns.MoveWaypoint(wp20, v0, v1) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("AudioOrigin")) +} +func Zombie3Rise() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(obj26) + v1 = ns.GetObjectY(obj26) + ns.RaiseZombie(obj26) + ns.MoveWaypoint(wp20, v0, v1) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("AudioOrigin")) +} +func SetpieceZombieDie() { + ivar23 += 1 + if !(ivar23 >= 3) { + goto LABEL1 + } + ns.StoryPic(obj18, "WarriorPic") + ns.SetDialog(obj18, ns.NORMAL, Guardian01DialogStart, Guardian01DialogEnd) + ns.LookAtObject(obj18, ns.GetHost()) + ns.LookAtObject(obj19, ns.GetHost()) + ns.StartDialog(obj18, ns.GetHost()) + ns.SetCallback(obj24, 5, NullCallback) + ns.SetCallback(obj25, 5, NullCallback) + ns.SetCallback(obj26, 5, NullCallback) +LABEL1: + return +} +func SetZombieDieCallbacks() { + ns.SetCallback(obj24, 5, SetpieceZombieDie) + ns.SetCallback(obj25, 5, SetpieceZombieDie) + ns.SetCallback(obj26, 5, SetpieceZombieDie) +} +func NullCallback() { +} +func InitializeGuardianSetpiece() { + obj24 = ns.Object("SetpieceZombie01") + obj25 = ns.Object("SetpieceZombie02") + obj26 = ns.Object("SetpieceZombie03") + ns.Damage(obj24, 0, 100, 0) + ns.Damage(obj25, 0, 100, 0) + ns.Damage(obj26, 0, 100, 0) + ns.ZombieStayDown(obj24) + ns.ZombieStayDown(obj25) + ns.ZombieStayDown(obj26) + ns.FrameTimer(30, SetZombieDieCallbacks) +} +func StartGuardianSetpiece() { + if !(ns.IsCaller(ns.GetHost()) && !flag22) { + goto LABEL1 + } + flag22 = true + ns.CreatureIdle(ns.GetHost()) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(15, Zombie1Rise) + ns.FrameTimer(25, Zombie2Rise) + ns.FrameTimer(20, Zombie3Rise) + ns.FrameTimer(45, GuardiansAttack) + ns.ObjectGroupOff(gvar13) +LABEL1: + return +} +func TurnOffLights() { + ns.ObjectToggle(obj30) + ns.ObjectGroupToggle(gvar31) + ns.ObjectGroupToggle(gvar32) + ns.ObjectGroupToggle(gvar33) + ns.ObjectGroupToggle(gvar34) + ns.ObjectToggle(obj27) + ns.ObjectToggle(obj28) + ns.ObjectToggle(obj29) +} +func PlayerDeath() { + ns.DeathScreen(6) +} +func captainTalk() { + ns.StartDialog(obj10, ns.GetHost()) +} +func captainTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.ArcherRecognize, "Con01a:CaptainProd") +} +func captainTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj10, ns.NORMAL, captainTalk1Start, captainTalk1End) +} +func undeadBreakIn() { + ns.WallBreak(ns.Wall(220, 118)) + ns.WallBreak(ns.Wall(219, 119)) + ns.WallBreak(ns.Wall(220, 120)) +} +func KirikEnd1() { + ns.SetDialog(obj43, ns.NORMAL, KirikStart1, KirikEnd1) +} +func KirikStart1() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Guard1Talk01") +} +func SecretRoom() { + ns.ObjectGroupOff(gvar44) + ns.MoveWaypoint(wp45, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp45) + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func InitializeTownspeople() { + obj50 = ns.Object("Townsman1") + obj51 = ns.Object("Townsman2") + obj52 = ns.Object("Townsman3") + obj53 = ns.Object("Townsman4") + obj54 = ns.Object("Townsman5") + obj55 = ns.Object("Townsman6") + obj56 = ns.Object("Townswoman1") + obj57 = ns.Object("Townswoman2") + obj58 = ns.Object("Townswoman3") + obj59 = ns.Object("Townswoman4") + obj60 = ns.Object("Townswoman5") + obj61 = ns.Object("Townswoman6") + wp62 = ns.Waypoint("TownspeopleStorage") + gvar63 = ns.ObjectGroup("Townspeople") + ns.StoryPic(obj18, "WarriorPic") + ns.StoryPic(obj19, "WarriorPic") + ns.StoryPic(obj40, "WarriorPic") + ns.SetDialog(obj40, ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) + ns.StoryPic(obj41, "Warrior2Pic") + ns.SetDialog(obj41, ns.NORMAL, fireKnightsTalk2Start, fireKnightsTalk2End) + ns.StoryPic(obj42, "Warrior3Pic") + ns.SetDialog(obj42, ns.NORMAL, fireKnightsTalk3Start, fireKnightsTalk3End) + ns.FrameTimer(15, OwnTownspeople) +} +func NewJournalEntry() { + ns.JournalEntry(ns.GetHost(), "War6Fortress", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +} +func MapInitialize() { + obj10 = ns.Object("Captain") + obj8 = ns.Object("Basket") + obj9 = ns.Object("BasketShadow") + obj4 = ns.Object("Townie1") + obj6 = ns.Object("DeadGuyBoots") + obj7 = ns.Object("DeadGuyChain") + obj5 = ns.Object("F6Elite2") + obj36 = ns.Object("GauntletDoorR") + obj37 = ns.Object("GauntletDoorL") + obj38 = ns.Object("IxDoorR") + obj39 = ns.Object("IxDoorL") + obj18 = ns.Object("F6FireGuard10") + obj19 = ns.Object("F6FireGuard7") + obj40 = ns.Object("F6FireGuard9") + obj41 = ns.Object("F2Fire6") + obj42 = ns.Object("F2Fire8") + obj27 = ns.Object("GearLight1") + obj28 = ns.Object("GearLight2") + obj29 = ns.Object("GearLight3") + obj30 = ns.Object("StupidTorch") + obj43 = ns.Object("Kirik") + ns.SetOwner(ns.GetHost(), obj43) + ns.SetOwner(ns.GetHost(), obj5) + gvar12 = ns.ObjectGroup("ZombieGroupA") + gvar13 = ns.ObjectGroup("SkeletonGroup01") + gvar31 = ns.ObjectGroup("StreetLamps") + gvar32 = ns.ObjectGroup("StreetLamps2") + gvar33 = ns.ObjectGroup("LightGears") + gvar34 = ns.ObjectGroup("LightGears2") + gvar44 = ns.ObjectGroup("SecretRoom2Triggers") + gvar15 = ns.ObjectGroup("EveryMonsterOnMap") + gvar14 = ns.ObjectGroup("FleemanMonsters") + wp11 = ns.Waypoint("TownieWP") + wp20 = ns.Waypoint("AudioOrigin") + wp45 = ns.Waypoint("PlayerSounds") + wp46 = ns.Waypoint("WellWP") + gvar21 = ns.WallGroup("GrdnStpcWalls") + ns.StoryPic(obj10, "AirshipCaptainPic") + ns.SetDialog(obj10, ns.NORMAL, captainTalk1Start, captainTalk1End) + ns.StoryPic(obj5, "WoundedWarriorPic") + ns.SetDialog(obj5, ns.NORMAL, townieTalk1Start, townieTalk1End) + ns.StoryPic(obj43, "Warrior4Pic") + ns.SetDialog(obj43, ns.NORMAL, KirikStart1, KirikEnd1) + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.LockDoor(obj38) + ns.LockDoor(obj39) + InitializeGuardianSetpiece() + InitializeTownspeople() + ns.StartupScreen(6) + ns.FrameTimer(15, NewJournalEntry) + ns.Music(16, 100) + ns.FrameTimer(1, captainTalk) + ns.Damage(obj4, 0, 100, 0) +} +func NoEnemys() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MonstersGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetCaller(), 0.16) + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func OwnTownspeople() { + ns.GroupSetOwner(ns.GetHost(), gvar63) +} +func fireKnightsRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar48 = ns.Random(1, 3) + if ivar48 != 1 { + goto LABEL2 + } + ns.StoryPic(ns.GetTrigger(), "WarriorPic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) +LABEL2: + if ivar48 != 2 { + goto LABEL3 + } + ns.StoryPic(ns.GetTrigger(), "Warrior2Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk2Start, fireKnightsTalk2End) +LABEL3: + if ivar48 != 3 { + goto LABEL1 + } + ns.StoryPic(ns.GetTrigger(), "Warrior3Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk3Start, fireKnightsTalk3End) +LABEL1: + return +} +func fireKnightsTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.SwordsmanRecognize, "Con06a:CityGuardSpeak1") +} +func fireKnightsTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.BecomePet(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsTalk2Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.SwordsmanRecognize, "Con06a:CityGuardSpeak2") +} +func fireKnightsTalk2End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.BecomePet(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsTalk3Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.SwordsmanRecognize, "War06a:CityGuardSpeak3") +} +func fireKnightsTalk3End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.BecomePet(ns.GetTrigger()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsStayTalkInit() { + if !(ns.IsCaller(obj18) || ns.IsCaller(obj19) || ns.IsCaller(obj40) || ns.IsCaller(obj41) || ns.IsCaller(obj42)) { + goto LABEL1 + } + if !ns.IsVisibleTo(ns.GetCaller(), ns.GetHost()) { + goto LABEL2 + } + ns.CreatureIdle(ns.GetCaller()) + ns.BecomeEnemy(ns.GetCaller()) + ns.CreatureGuard(ns.GetCaller(), ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 150) + ns.AggressionLevel(ns.GetCaller(), 0.5) + ns.Wander(ns.GetCaller()) + if !flag49 { + goto LABEL3 + } + flag49 = false + obj47 = ns.GetCaller() + ns.SetDialog(ns.GetCaller(), ns.NORMAL, fireKnightsStayTalkStart, fireKnightsStayTalkEnd) + ns.StartDialog(ns.GetCaller(), ns.GetHost()) +LABEL3: + goto LABEL4 +LABEL2: + ns.AggressionLevel(ns.GetCaller(), 0.5) + ns.Wander(ns.GetCaller()) +LABEL4: + goto LABEL5 +LABEL1: + ns.AggressionLevel(ns.GetCaller(), 0.5) + ns.Wander(ns.GetCaller()) +LABEL5: + return +} +func fireKnightsStayTalkStart() { + ns.TellStory(ns.SwordsmanRecognize, "Con06:SaveDunMir06Conjurer") +} +func fireKnightsStayTalkEnd() { + ns.CancelDialog(ns.GetTrigger()) +} +func townsMenRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar48 = ns.Random(1, 3) + if ivar48 != 1 { + goto LABEL2 + } + ns.StoryPic(ns.GetTrigger(), "Townsman1Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsmenTalk1Start, townsmenTalk1End) +LABEL2: + if ivar48 != 2 { + goto LABEL3 + } + ns.StoryPic(ns.GetTrigger(), "Townsman2Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsmenTalk2Start, townsmenTalk2End) +LABEL3: + if ivar48 != 3 { + goto LABEL1 + } + ns.StoryPic(ns.GetTrigger(), "Townsman3Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsmenTalk3Start, townsmenTalk3End) +LABEL1: + return +} +func townsmenTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.UrchinRecognize, "War06a:TownspeopleSpeak1") +} +func townsmenTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) +} +func townsmenTalk2Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.UrchinRecognize, "Con06a:TownspeopleSpeak2") +} +func townsmenTalk2End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) +} +func townsmenTalk3Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.UrchinRecognize, "War06a:TownspeopleSpeak3") +} +func townsmenTalk3End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) +} +func townsWomenRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar48 = ns.Random(1, 3) + if ivar48 != 1 { + goto LABEL2 + } + ns.StoryPic(ns.GetTrigger(), "MaidenPic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsWomenTalk1Start, townsWomenTalk1End) +LABEL2: + if ivar48 != 2 { + goto LABEL3 + } + ns.StoryPic(ns.GetTrigger(), "MaidenPic2") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsWomenTalk2Start, townsWomenTalk2End) +LABEL3: + if ivar48 != 3 { + goto LABEL1 + } + ns.StoryPic(ns.GetTrigger(), "MaidenPic3") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsWomenTalk3Start, townsWomenTalk3End) +LABEL1: + return +} +func townsWomenTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.GhostRecognize, "War06a:WomenSpeak1") +} +func townsWomenTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) +} +func townsWomenTalk2Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.GhostRecognize, "War06a:WomenSpeak1") +} +func townsWomenTalk2End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) +} +func townsWomenTalk3Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.GhostRecognize, "War06a:WomenSpeak1") +} +func townsWomenTalk3End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) +} +func leavingDunMir() { + if !(ns.IsCaller(obj50) || ns.IsCaller(obj51) || ns.IsCaller(obj52) || ns.IsCaller(obj53) || ns.IsCaller(obj54) || ns.IsCaller(obj55) || ns.IsCaller(obj56) || ns.IsCaller(obj57) || ns.IsCaller(obj58) || ns.IsCaller(obj59) || ns.IsCaller(obj60) || ns.IsCaller(obj61)) { + goto LABEL1 + } + ns.MoveObject(ns.GetCaller(), ns.GetWaypointX(wp62), ns.GetWaypointY(wp62)) + ns.ObjectOff(ns.GetCaller()) +LABEL1: + return +} +func flee() { + ns.Wander(ns.GetTrigger()) +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp46) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con06a/dummy_test.go b/examples/con06a/dummy_test.go new file mode 100644 index 0000000..6ad8905 --- /dev/null +++ b/examples/con06a/dummy_test.go @@ -0,0 +1,6 @@ +package con06a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con06b/con06b.go b/examples/con06b/con06b.go new file mode 100644 index 0000000..3750965 --- /dev/null +++ b/examples/con06b/con06b.go @@ -0,0 +1,868 @@ +package con06b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + flag9 bool + flag10 bool + flag11 bool + flag12 bool + flag13 bool + flag14 bool + fvar15 float32 + fvar16 float32 + ivar17 int + ivar18 int + gvar19 int + gvar20 int + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + gvar54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + gvar65 ns.ObjectGroupID + gvar66 ns.ObjectGroupID + gvar67 ns.ObjectGroupID + gvar68 ns.ObjectGroupID + gvar69 ns.ObjectGroupID + gvar70 ns.ObjectGroupID + gvar71 ns.ObjectGroupID + gvar72 ns.WallGroupID + gvar73 ns.WallGroupID + gvar74 ns.WallGroupID + gvar75 ns.WallGroupID + gvar76 ns.WallGroupID + gvar77 ns.WallGroupID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + wp90 ns.WaypointID + wp91 ns.WaypointID + flag92 bool + flag93 bool + flag94 bool + flag95 bool + ivar96 int + ivar97 int + obj98 ns.ObjectID + gvar99 int + gvar100 int + gvar101 int + gvar102 int + wp103 ns.WaypointID +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + flag9 = true + flag10 = true + flag11 = true + flag12 = true + flag13 = false + flag14 = true + ivar17 = 0 + ivar18 = 0 + gvar19 = 0 + gvar20 = gvar4 + flag92 = true + flag93 = false + flag94 = true + flag95 = false + ivar96 = 76 + ivar97 = 70 +} +func NullCallback() { +} +func fireKnightsRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar17 = ns.Random(1, 3) + if ivar17 != 1 { + goto LABEL2 + } + ns.StoryPic(ns.GetTrigger(), "WarriorPic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) +LABEL2: + if ivar17 != 2 { + goto LABEL3 + } + ns.StoryPic(ns.GetTrigger(), "Warrior2Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk2Start, fireKnightsTalk2End) +LABEL3: + if ivar17 != 3 { + goto LABEL1 + } + ns.StoryPic(ns.GetTrigger(), "Warrior3Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk3Start, fireKnightsTalk3End) +LABEL1: + return +} +func fireKnightsTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.SwordsmanRecognize, "Con06a:CityGuardSpeak1") +} +func fireKnightsTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar67) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.BecomePet(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsTalk2Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.SwordsmanRecognize, "Con06a:CityGuardSpeak2") +} +func fireKnightsTalk2End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar67) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.BecomePet(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsTalk3Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.SwordsmanRecognize, "War06a:CityGuardSpeak3") +} +func fireKnightsTalk3End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar67) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.BecomePet(ns.GetTrigger()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func ownFriends() { + ns.JournalEntry(ns.GetHost(), "War6Horrendous", 2) + ns.JournalEdit(ns.GetHost(), "War6Fortress", 4) + ns.SetOwner(ns.GetHost(), obj21) + ns.SetOwner(ns.GetHost(), obj27) + ns.SetOwner(ns.GetHost(), obj28) + ns.SetOwner(ns.GetHost(), obj29) + ns.SetOwner(ns.GetHost(), obj30) + ns.StoryPic(obj31, "WarriorPic") + ns.SetDialog(obj31, ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) + ns.StoryPic(obj32, "Warrior2Pic") + ns.SetDialog(obj32, ns.NORMAL, fireKnightsTalk2Start, fireKnightsTalk2End) + ns.StoryPic(obj33, "Warrior3Pic") + ns.SetDialog(obj33, ns.NORMAL, fireKnightsTalk3Start, fireKnightsTalk3End) + ns.StoryPic(obj34, "WarriorPic") + ns.SetDialog(obj34, ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) +} +func secretArea() { + ns.MoveWaypoint(wp78, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp78) + ns.GiveXp(ns.GetHost(), 500) +} +func toggleMainGates() { + if gvar19 != 0 { + goto LABEL1 + } + gvar19 = 1 + openMainGates() + goto LABEL2 +LABEL1: + gvar19 = 0 + closeMainGates() +LABEL2: + ns.AudioEvent(ns.SecretWallStoneClose, wp84) + ns.AudioEvent(ns.BoulderMove, wp84) +} +func openMainGates() { + ns.Move(obj50, wp80) + ns.Move(obj51, wp81) + ns.Move(obj52, wp82) + ns.Move(obj53, wp83) +} +func closeMainGates() { + ns.Move(obj50, wp84) + ns.Move(obj51, wp85) + ns.Move(obj52, wp86) + ns.Move(obj53, wp87) +} +func deathToDoorStops() { + ns.Delete(ns.GetCaller()) +} +func startHorrendousTalk() { + ns.StartDialog(obj21, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj21) +} +func faceHorrendous() { + ns.LookAtObject(ns.GetTrigger(), obj21) +} +func horrendousDie() { + ns.JournalEntry(ns.GetHost(), "War6Necro", 2) + ns.JournalEdit(ns.GetHost(), "War6Horrendous", 4) + ns.JournalDelete(ns.GetHost(), "War6Fortress") + flag14 = false + ns.MoveObject(obj22, ns.GetObjectX(obj21), ns.GetObjectY(obj21)) + fvar15 = ns.GetObjectX(obj21) - 55 + fvar16 = ns.GetObjectY(obj21) + 20 + ns.MoveObject(obj21, 1161, 2794) + ns.SetDialog(gvar54, ns.NORMAL, hecubahTalk4Start, hecubahTalk4End) + ns.StartDialog(gvar54, ns.GetHost()) + ns.FrameTimer(110, horrendousDying) +} +func horrendousDying() { + ns.MoveObject(obj23, ns.GetObjectX(obj22), ns.GetObjectY(obj22)) + ns.Delete(obj22) + ns.FrameTimer(15, horrendousDropHalberd) +} +func horrendousDropHalberd() { + ns.MoveObject(obj26, ns.GetObjectX(obj23)-10, ns.GetObjectY(obj23)+5) +} +func horrendousDead() { + ns.Music(28, 100) + ns.WideScreen(false) + ns.MoveObject(obj24, ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + ns.Delete(obj23) + ns.AudioEvent(ns.DemonDie, wp90) + if gvar54 == 0 { + goto LABEL1 + } + ns.Delete(gvar54) +LABEL1: + return +} +func horrendousSpeak() { + ns.Music(0, 100) + ns.WideScreen(true) + ns.SetDialog(obj21, ns.NORMAL, horrendousTalk1Start, horrendousTalk1End) + ns.StartDialog(obj21, ns.GetHost()) +} +func horrendousTalk1Start() { + ns.ObjectGroupOn(gvar71) + ns.Frozen(ns.GetHost(), true) + ns.LockDoor(obj35) + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.GroupPauseObject(gvar67, 10) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.DemonRecognize, "Con06a:BoastfulHorrendous") +} +func horrendousTalk1End() { + ns.CancelDialog(obj21) + ns.SetDialog(gvar54, ns.NEXT, hecubahTalk1Start, hecubahTalk1End) + ns.FrameTimer(30, hecubahBustIn) +} +func horrendousTalk2Start() { + ns.TellStory(ns.DemonRecognize, "War06a:HorrendousVsHec") +} +func horrendousTalk2End() { + ns.SetDialog(obj21, ns.NEXT, horrendousTalk3Start, horrendousTalk3End) + ns.FrameTimer(30, startHorrendousTalk) +} +func horrendousTalk3Start() { + ns.TellStory(ns.DemonRecognize, "War06a:ChallengingHec") +} +func horrendousTalk3End() { + ns.CancelDialog(obj21) + ns.SetDialog(gvar54, ns.NEXT, hecubahTalk2Start, hecubahTalk2End) + ns.FrameTimer(30, startHecubahTalk) +} +func horrendousTalk5Start() { + ns.Music(0, 100) + ns.LookAtObject(ns.GetHost(), obj23) + ns.TellStory(ns.DemonRecognize, "War06a:HecDefeatsHorrendous") +} +func horrendousTalk5End() { + ns.CancelDialog(obj21) + ns.SetDialog(gvar54, ns.NEXT, hecubahTalk5Start, hecubahTalk5End) + ns.FrameTimer(30, startHecubahTalk) +} +func horrendousTalk6Start() { + ns.TellStory(ns.DemonRecognize, "War06a:HorrendousPride") +} +func horrendousTalk6End() { + ns.ObjectGroupOn(gvar67) + ns.EnchantOff(ns.GetHost(), ns.ENCHANT_INVULNERABLE) + ns.CancelDialog(obj21) + horrendousDead() + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar67) + ns.AggressionLevel(obj56, 0.83) + ns.AggressionLevel(obj57, 0.83) + ns.AggressionLevel(obj58, 0.83) + ns.AggressionLevel(obj59, 0.83) + ns.AggressionLevel(obj60, 0.83) + ns.AggressionLevel(obj61, 0.83) + ns.AggressionLevel(obj62, 0.83) + ns.AggressionLevel(obj63, 0.83) + ns.AggressionLevel(obj64, 0.83) +} +func talkToHorrendous() { + ns.SetDialog(obj21, ns.NORMAL, horrendousTalk6Start, horrendousTalk6End) + ns.StartDialog(obj21, ns.GetHost()) +} +func startHecubahTalk() { + ns.StartDialog(gvar54, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), gvar54) +} +func hecubahBustIn() { + ns.ObjectGroupOff(gvar71) + ns.ObjectGroupOn(gvar66) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar72) + ns.NoWallSound(false) + ns.Delete(obj46) + ns.Delete(obj47) + ns.Delete(obj48) + ns.Delete(obj49) + ns.FrameTimer(10, hecubahBreakIn) +} +func hecubahBreakIn() { + ns.WallGroupBreak(gvar73) + ns.Enchant(obj21, ns.ENCHANT_VILLAIN, 0) + ns.ObjectGroupOn(gvar69) + ns.AggressionLevel(gvar54, 0) + ns.AggressionLevel(obj55, 0) + ns.AggressionLevel(obj56, 0) + ns.AggressionLevel(obj57, 0) + ns.AggressionLevel(obj58, 0) + ns.AggressionLevel(obj59, 0) + ns.AggressionLevel(obj60, 0) + ns.AggressionLevel(obj61, 0) + ns.AggressionLevel(obj62, 0) + ns.AggressionLevel(obj63, 0) + ns.AggressionLevel(obj64, 0) + ns.Wander(gvar54) + ns.StartDialog(gvar54, ns.GetHost()) +} +func hecKillsEveryone() { + if !(ns.IsCaller(gvar54) || ns.IsCaller(obj55)) { + goto LABEL1 + } + ns.FrameTimer(3, hecIsKilling) +LABEL1: + return +} +func isHecKilling() { + if !flag9 { + goto LABEL1 + } + ns.Music(28, 75) + ns.FrameTimer(3, hecIsKilling) +LABEL1: + return +} +func hecIsKilling() { + var v0 int + if !flag10 { + goto LABEL1 + } + flag9 = false + ns.LookAtObject(ns.GetHost(), gvar54) + v0 = gvar20 + if v0 == gvar4 { + goto LABEL2 + } + if v0 == gvar5 { + goto LABEL3 + } + if v0 == gvar6 { + goto LABEL4 + } + if v0 == gvar7 { + goto LABEL5 + } + if v0 == gvar8 { + goto LABEL6 + } + goto LABEL7 +LABEL2: + ns.LookAtObject(gvar54, obj21) + ns.LookAtObject(ns.GetHost(), obj21) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj21), ns.GetObjectY(obj21)) + ns.Damage(obj21, 0, 1000, 0) + gvar20 = gvar5 + goto LABEL7 +LABEL3: + ns.LookAtObject(gvar54, obj27) + ns.LookAtObject(ns.GetHost(), obj27) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj27), ns.GetObjectY(obj27)) + ns.Damage(obj27, 0, 1000, 0) + gvar20 = gvar6 + goto LABEL7 +LABEL4: + ns.LookAtObject(gvar54, obj28) + ns.LookAtObject(ns.GetHost(), obj28) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj28), ns.GetObjectY(obj28)) + ns.Damage(obj28, 0, 1000, 0) + gvar20 = gvar7 + goto LABEL7 +LABEL5: + ns.LookAtObject(gvar54, obj29) + ns.LookAtObject(ns.GetHost(), obj29) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj29), ns.GetObjectY(obj29)) + ns.Damage(obj29, 0, 1000, 0) + gvar20 = gvar8 + goto LABEL7 +LABEL6: + ns.LookAtObject(gvar54, obj30) + ns.LookAtObject(ns.GetHost(), obj30) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj30), ns.GetObjectY(obj30)) + ns.Damage(obj30, 0, 1000, 0) + flag10 = false + goto LABEL7 +LABEL7: + ns.FrameTimer(15, hecIsKilling) +LABEL1: + ns.LookAtObject(ns.GetHost(), gvar54) +} +func hecubahTalk1Start() { + ns.TellStory(ns.GhostRecognize, "War06a:HecubahThreat") +} +func hecubahTalk1End() { + ns.CancelDialog(gvar54) + ns.SetDialog(obj21, ns.NEXT, horrendousTalk2Start, horrendousTalk2End) + ns.FrameTimer(30, startHorrendousTalk) +} +func hecubahTalk2Start() { + ns.TellStory(ns.GhostRecognize, "War06a:HecubahAccepts") +} +func hecubahTalk2End() { + ns.CancelDialog(gvar54) + ns.Enchant(ns.GetHost(), ns.ENCHANT_INVULNERABLE, 0) + ns.ObjectOn(obj38) + ns.FrameTimer(240, isHecKilling) +} +func hecubahTalk4Start() { + ns.ObjectOff(gvar54) + ns.TellStory(ns.GhostRecognize, "War06a:HecubahWins") +} +func hecubahTalk4End() { + ns.SetDialog(obj21, ns.NEXT, horrendousTalk5Start, horrendousTalk5End) + ns.FrameTimer(30, startHorrendousTalk) + ns.CancelDialog(gvar54) +} +func hecubahTalk5Start() { + ns.TellStory(ns.GhostRecognize, "War06a:HecubahToNecro") +} +func hecubahTalk5End() { + ns.CancelDialog(gvar54) + ns.ObjectOn(obj55) + ns.AggressionLevel(obj55, 0) + ns.Walk(obj55, ns.GetWaypointX(wp79), ns.GetWaypointY(wp79)) + ns.SetDialog(obj55, ns.NEXT, necromancerTalk1Start, necromancerTalk1End) + ns.FrameTimer(90, startNecromancerTalk) +} +func hecubahTalk6Start() { + ns.TellStory(ns.GhostRecognize, "War06a:HecThreatJack") +} +func hecubahTalk6End() { + ns.CancelDialog(gvar54) + ns.ObjectOn(gvar54) + ns.AggressionLevel(gvar54, 0) + ns.Walk(gvar54, 931, 3036) + ns.SetDialog(obj55, ns.NEXT, necromancerTalk2Start, necromancerTalk2End) + ns.FrameTimer(30, startNecromancerTalk) +} +func startNecromancerTalk() { + ns.StartDialog(obj55, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj55) +} +func necromancerTalk1Start() { + ns.CreatureIdle(obj55) + ns.LookAtObject(obj55, obj26) + ns.TellStory(ns.EmberDemonRecognize, "War06a:NecroMockHorren") +} +func necromancerTalk1End() { + ns.CancelDialog(obj55) + ns.Pickup(obj55, obj26) + ns.SetDialog(gvar54, ns.NEXT, hecubahTalk6Start, hecubahTalk6End) + ns.FrameTimer(30, startHecubahTalk) +} +func necromancerTalk2Start() { + ns.TellStory(ns.EmberDemonRecognize, "War06a:NecroThreatJack") +} +func necromancerTalk2End() { + ns.CancelDialog(obj55) + ns.ObjectOn(obj55) + ns.AggressionLevel(obj55, 0) + ns.Walk(obj55, 931, 3036) + ns.FrameTimer(240, talkToHorrendous) +} +func lowerNecroWall() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar74) +} +func getHalberd() { + ns.Pickup(ns.GetHost(), obj26) + ns.FrameTimer(3, necroDies2) +} +func exitFade() { + ns.Blind() + ns.FrameTimer(60, exitTile) +} +func exitTile() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), 5394, 2955) +} +func FreezePlayer() { + ns.CreatureIdle(obj55) + ns.LookAtObject(ns.GetHost(), obj55) + ns.LookAtObject(obj55, ns.GetHost()) + ns.Frozen(ns.GetHost(), true) + ns.Delete(obj56) + ns.Delete(obj57) + ns.Delete(obj58) + ns.Delete(obj59) + ns.Delete(obj60) + ns.Delete(obj61) + ns.Delete(obj62) + ns.Delete(obj63) + ns.Delete(obj64) + ns.FrameTimer(15, necroSetPiece) +} +func necroSetPiece() { + ns.WideScreen(true) + ns.ObjectOff(obj55) + ns.SetDialog(obj55, ns.NORMAL, necromancerTalk3Start, necromancerTalk3End) + ns.StartDialog(obj55, ns.GetHost()) +} +func wallWalk() { + if ivar17 != 0 { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeUpLeft, wp103) +LABEL1: + if ivar17 != 1 { + goto LABEL2 + } + ns.AudioEvent(ns.SpellPhonemeUp, wp103) +LABEL2: + if ivar17 != 2 { + goto LABEL3 + } + ns.AudioEvent(ns.SpellPhonemeUpRight, wp103) +LABEL3: + if !(ivar17 < 49) { + goto LABEL4 + } + ns.WallClose(ns.Wall(ivar96, ivar97)) + ivar17 += 1 + ivar96 -= 1 + ivar97 -= 1 + ns.FrameTimer(6, wallWalk) +LABEL4: + return +} +func releasePlayer() { + ns.NoWallSound(false) + ns.CastSpellLocationLocation("SUMMON_SKELETON_LORD", ns.GetObjectX(obj55), ns.GetObjectY(obj55), 1575, 1506) + ns.CastSpellLocationLocation("SUMMON_SKELETON_LORD", ns.GetObjectX(obj55), ns.GetObjectY(obj55), 1702, 1506) + ns.Frozen(ns.GetHost(), false) +} +func endFightMusic() { + ns.Music(27, 100) +} +func necromancerTalk3Start() { + ns.GroupPauseObject(gvar67, 10) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.ZombieRecognize, "Con06a:NecroAttackJack") +} +func necromancerTalk3End() { + ns.ObjectGroupOn(gvar67) + ns.CancelDialog(obj55) + ns.WideScreen(false) + ns.ObjectOn(obj55) + ns.Frozen(obj55, false) + ns.Wander(obj55) + ns.FrameTimer(10, wallWalk) + ns.FrameTimer(50, releasePlayer) + ns.FrameTimer(60, lowerNecroWall) +} +func necromancerTalk4Start() { + ns.GroupPauseObject(gvar67, 10) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.ZombieRecognize, "Con06a:NecroDies") +} +func necromancerTalk4End() { + ns.ObjectGroupOn(gvar67) + ns.CancelDialog(obj55) + ns.Frozen(obj55, false) + ns.GroupDamage(gvar68, 0, 1000, 0) + ns.FrameTimer(15, getHalberd) +} +func necroDies() { + ivar18 += 1 + flag92 = false + ns.LookAtObject(obj55, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj55) + ns.Frozen(obj55, true) + ns.MoveObject(obj26, 1310, 2900) + ns.SetDialog(obj55, ns.NORMAL, necromancerTalk4Start, necromancerTalk4End) + ns.StartDialog(obj55, ns.GetHost()) +} +func necroDies2() { + if !(ivar18 > 4) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), obj26) { + goto LABEL2 + } + ns.JournalEdit(ns.GetHost(), "War6Necro", 4) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(45, exitFade) + goto LABEL3 +LABEL2: + ns.FrameTimer(3, necroDies2) +LABEL3: + goto LABEL4 +LABEL1: + ns.FrameTimer(3, necroDies2) +LABEL4: + return +} +func MapInitialize() { + obj21 = ns.Object("Horrendous") + obj22 = ns.Object("Horrendous_") + obj23 = ns.Object("Horrendous__") + obj24 = ns.Object("Horrendous___") + obj25 = ns.Object("Horrendous____") + obj26 = ns.Object("OblivionHalberd") + obj27 = ns.Object("EliteGuard1") + obj28 = ns.Object("EliteGuard2") + obj29 = ns.Object("EliteGuard3") + obj30 = ns.Object("EliteGuard4") + obj31 = ns.Object("F2Fire6") + obj32 = ns.Object("F6FireGuard1") + obj33 = ns.Object("F6FireGuard4") + obj34 = ns.Object("F6Guard8") + obj35 = ns.Object("ArenaDoor1") + obj36 = ns.Object("ArenaDoor2") + obj37 = ns.Object("ArenaDoor3") + obj38 = ns.Object("KillTrigger") + ns.ObjectOff(obj38) + obj39 = ns.Object("CellDoor1") + obj40 = ns.Object("CellDoor2") + obj41 = ns.Object("CellDoor3") + obj42 = ns.Object("CellDoor4") + obj43 = ns.Object("CellDoor5") + obj44 = ns.Object("CellDoor6") + obj45 = ns.Object("CellDoor7") + obj46 = ns.Object("BreakInObject1") + obj47 = ns.Object("BreakInObject2") + obj48 = ns.Object("BreakInObject3") + obj49 = ns.Object("BreakInObject4") + gvar54 = ns.Object("Hecubah") + obj55 = ns.Object("Necromancer") + obj56 = ns.Object("UndeadWar1") + obj57 = ns.Object("UndeadWar2") + obj58 = ns.Object("UndeadWar3") + obj59 = ns.Object("UndeadWar4") + obj60 = ns.Object("SkeLord1") + obj61 = ns.Object("SkeLord2") + obj62 = ns.Object("SkeLord3") + obj63 = ns.Object("SkeLord4") + obj64 = ns.Object("SkeLord5") + obj50 = ns.Object("FG1Mover") + obj51 = ns.Object("FG2Mover") + obj52 = ns.Object("FG3Mover") + obj53 = ns.Object("FG4Mover") + gvar65 = ns.ObjectGroup("NecroGuards") + ns.ObjectGroupOff(gvar65) + gvar66 = ns.ObjectGroup("Wolves") + ns.ObjectGroupOff(gvar66) + gvar67 = ns.ObjectGroup("EveryMonsterOnMap") + gvar68 = ns.ObjectGroup("EveryMonsterOnMap2") + gvar69 = ns.ObjectGroup("PartyCrashers") + gvar70 = ns.ObjectGroup("HecBreakInObjects") + gvar71 = ns.ObjectGroup("DoorStopTriggers") + ns.ObjectGroupOff(gvar71) + gvar72 = ns.WallGroup("HecBreakIn") + gvar73 = ns.WallGroup("HecBreakDown") + gvar74 = ns.WallGroup("NecroWall") + gvar75 = ns.WallGroup("NecroExitWall") + gvar76 = ns.WallGroup("WizardCages") + gvar77 = ns.WallGroup("DeathCage") + wp78 = ns.Waypoint("PlayerSounds") + wp79 = ns.Waypoint("NecroSpotWP") + wp80 = ns.Waypoint("FG1Open") + wp81 = ns.Waypoint("FG2Open") + wp82 = ns.Waypoint("FG3Open") + wp83 = ns.Waypoint("FG4Open") + wp84 = ns.Waypoint("FG1Closed") + wp85 = ns.Waypoint("FG2Closed") + wp86 = ns.Waypoint("FG3Closed") + wp87 = ns.Waypoint("FG4Closed") + wp88 = ns.Waypoint("UpStairs") + wp89 = ns.Waypoint("DownStairs") + wp90 = ns.Waypoint("NecroNoise") + wp91 = ns.Waypoint("WellWP") + obj55 = ns.Object("Necromancer") + obj98 = ns.Object("Halberd") + wp103 = ns.Waypoint("SewerChase") + ns.StoryPic(obj55, "BlackWizardPic") + ns.StoryPic(obj21, "HorrendousPic") + ns.StoryPic(gvar54, "HecubahPic") + ns.StoryPic(obj55, "NecromancerPic") + ns.AggressionLevel(obj21, 0) + ns.AggressionLevel(obj27, 0) + ns.AggressionLevel(obj28, 0) + ns.AggressionLevel(obj29, 0) + ns.AggressionLevel(obj30, 0) + ns.ObjectGroupOff(gvar69) + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.LockDoor(obj41) + ns.LockDoor(obj42) + ns.LockDoor(obj43) + ns.LockDoor(obj44) + ns.LockDoor(obj45) + ns.FrameTimer(3, ownFriends) + ns.Music(16, 100) +} +func PlayerDeath() { + ns.DeathScreen(6) +} +func unlockCells() { + ns.UnlockDoor(obj39) + ns.UnlockDoor(obj40) + ns.UnlockDoor(obj41) + ns.UnlockDoor(obj42) + ns.UnlockDoor(obj43) + ns.UnlockDoor(obj44) + ns.UnlockDoor(obj45) +} +func lockCells() { + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.LockDoor(obj41) + ns.LockDoor(obj42) + ns.LockDoor(obj43) + ns.LockDoor(obj44) + ns.LockDoor(obj45) +} +func setNecroPosition() { + if !ns.IsCaller(obj55) { + goto LABEL1 + } + ns.Frozen(obj55, true) + ns.MoveObject(obj55, 1776, 1502) +LABEL1: + if !ns.IsCaller(gvar54) { + goto LABEL2 + } + if gvar54 == 0 { + goto LABEL2 + } + ns.Delete(gvar54) +LABEL2: + return +} +func setupNecroSetPiece() { + ns.Music(18, 100) + ns.PauseObject(ns.GetTrigger(), 10) + ns.ObjectOff(ns.GetTrigger()) + ns.FrameTimer(1, FreezePlayer) +} +func setNecroPosition2() { + if !ns.IsCaller(obj55) { + goto LABEL1 + } + ns.MoveObject(obj55, 5057, 3809) +LABEL1: + return +} +func necroGuard() { + ns.CreatureGuard(obj55, 5057, 3809, 5232, 3991, 500) + ns.AggressionLevel(obj55, 0.5) + ns.ObjectGroupOn(gvar65) +} +func NecroInjured() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.RestoreHealth(obj55, 14) +LABEL1: + return +} +func necroGuardDies() { + ivar18 += 1 +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp91) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con06b/dummy_test.go b/examples/con06b/dummy_test.go new file mode 100644 index 0000000..ee570d5 --- /dev/null +++ b/examples/con06b/dummy_test.go @@ -0,0 +1,6 @@ +package con06b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con07a/con07a.go b/examples/con07a/con07a.go new file mode 100644 index 0000000..7a5f783 --- /dev/null +++ b/examples/con07a/con07a.go @@ -0,0 +1,58 @@ +package con07a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID +) + +func MapSetup() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj4) + ns.SetOwner(ns.GetHost(), obj4) + ns.SetOwner(ns.GetHost(), obj5) + ns.FrameTimer(10, StartJandorTalk) + ns.JournalEntry(ns.GetHost(), "GetHON", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +} +func JandorBriefStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con07A.scr:Jandor01") +} +func JandorBriefEnd() { + ns.CancelDialog(obj4) + ns.Frozen(ns.GetHost(), false) +} +func LanceDialogStart() { + ns.TellStory(ns.SwordsmanHurt, "War01A.scr:Guard1Talk01") +} +func LanceDialogEnd() { +} +func StartJandorTalk() { + ns.StartDialog(obj4, ns.GetHost()) +} +func MapInitialize() { + obj4 = ns.Object("Jandor") + obj5 = ns.Object("Lance") + obj6 = ns.Object("FacadeGate") + ns.SetDialog(obj4, ns.NORMAL, JandorBriefStart, JandorBriefEnd) + ns.StoryPic(obj4, "AirshipCaptainPic") + ns.SetDialog(obj5, ns.NORMAL, LanceDialogStart, LanceDialogEnd) + ns.StoryPic(obj5, "WizardGuard1Pic") + ns.LockDoor(obj6) + ns.StartupScreen(7) + ns.FrameTimer(1, MapSetup) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con07a/dummy_test.go b/examples/con07a/dummy_test.go new file mode 100644 index 0000000..7503267 --- /dev/null +++ b/examples/con07a/dummy_test.go @@ -0,0 +1,6 @@ +package con07a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con07b/con07b.go b/examples/con07b/con07b.go new file mode 100644 index 0000000..9c191a8 --- /dev/null +++ b/examples/con07b/con07b.go @@ -0,0 +1,659 @@ +package con07b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + gvar40 ns.WallGroupID + gvar41 ns.WallGroupID + wp42 ns.WaypointID + wp43 ns.WaypointID + ivar44 int + gvar45 int + flag46 bool + gvar47 int + gvar48 int + gvar49 int + gvar50 int + gvar51 int + gvar52 int + gvar53 int + flag54 bool + flag55 bool + flag56 bool + flag57 bool + flag58 bool + flag59 bool +) + +func init() { + ivar44 = 0 + gvar45 = 25 + flag46 = true + gvar47 = 0 + gvar48 = 1 + gvar49 = 2 + gvar50 = 3 + gvar51 = 4 + gvar52 = 5 + gvar53 = gvar47 + flag54 = false + flag55 = false + flag56 = false + flag57 = false + flag58 = false + flag59 = false +} +func DialogInit() { + obj4 = ns.Object("Albi") + obj5 = ns.Object("Dorian") + obj6 = ns.Object("Grunbar") + obj7 = ns.Object("Jorgan") + obj8 = ns.Object("Civvy3") + obj9 = ns.Object("Civvy4") + obj10 = ns.Object("Eowynn") + obj12 = ns.Object("Shari") + obj11 = ns.Object("Kayla") + ns.StoryPic(obj5, "Townsman2Pic") + ns.StoryPic(obj6, "MalePic7") + ns.StoryPic(obj4, "MalePic1") + ns.StoryPic(obj7, "Townsman3Pic") + ns.StoryPic(obj10, "MaidenPic") + ns.StoryPic(obj11, "MaidenPic2") + ns.StoryPic(obj12, "MaidenPic3") + ns.SetDialog(obj10, ns.NORMAL, EowynnStart, EowynnEnd) + ns.SetDialog(obj11, ns.NORMAL, KaylaStart, KaylaEnd) + ns.SetDialog(obj12, ns.NORMAL, ShariStart, ShariEnd) + ns.SetDialog(obj7, ns.NORMAL, JorganStart, JorganEnd) + ns.SetDialog(obj4, ns.NORMAL, AlbiStart, AlbiEnd) + ns.SetDialog(obj5, ns.NORMAL, DorianStart, DorianEnd) + ns.SetDialog(obj6, ns.NORMAL, GrunbarStart, GrunbarEnd) + ns.FrameTimer(1, OwnTownies) +} +func OwnTownies() { + ns.SetOwner(ns.GetHost(), obj4) + ns.SetOwner(ns.GetHost(), obj6) + ns.SetOwner(ns.GetHost(), obj5) + ns.SetOwner(ns.GetHost(), obj7) + ns.SetOwner(ns.GetHost(), obj8) + ns.SetOwner(ns.GetHost(), obj9) + ns.SetOwner(ns.GetHost(), obj10) + ns.SetOwner(ns.GetHost(), obj12) + ns.SetOwner(ns.GetHost(), obj11) +} +func EowynnStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj10, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj10) + ns.LookAtObject(obj10, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj10) + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:MaidenTalk03") +} +func EowynnEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj10, false) + ns.Wander(obj10) + ns.SetDialog(obj10, ns.NORMAL, EowynnStart, EowynnEnd) +} +func ShariStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj12, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj12) + ns.LookAtObject(obj12, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj12) + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:MaidenTalk02") +} +func ShariEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj12, false) + ns.Wander(obj12) + ns.SetDialog(obj12, ns.NORMAL, ShariStart, ShariEnd) +} +func KaylaStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj11, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj11) + ns.LookAtObject(ns.GetHost(), obj11) + ns.LookAtObject(obj11, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:MaidenTalk01") +} +func KaylaEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj11, false) + ns.Wander(obj11) + ns.SetDialog(obj11, ns.NORMAL, KaylaStart, KaylaEnd) +} +func JorganStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj7, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj7) + ns.LookAtObject(ns.GetHost(), obj7) + ns.LookAtObject(obj7, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con07:HecRaisesDead") +} +func JorganEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj7, false) + ns.Wander(obj7) + ns.SetDialog(obj7, ns.NORMAL, JorganStart, JorganEnd) +} +func AlbiStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj4) + ns.LookAtObject(ns.GetHost(), obj4) + ns.LookAtObject(obj4, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con07:LeavingGalava2") +} +func AlbiEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj4, false) + ns.Wander(obj4) + ns.SetDialog(obj4, ns.NORMAL, AlbiStart, AlbiEnd) +} +func DorianStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj5, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj5) + ns.LookAtObject(ns.GetHost(), obj5) + ns.LookAtObject(obj5, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con07:LeavingGalava1") +} +func DorianEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj5, false) + ns.Wander(obj5) + ns.SetDialog(obj5, ns.NORMAL, DorianStart, DorianEnd) +} +func GrunbarStart() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War03b:T4Post") +} +func GrunbarEnd() { + ns.Frozen(ns.GetHost(), false) +} +func CreatureSetup() { + ns.SetOwner(ns.GetHost(), obj20) + ns.SetOwner(ns.GetHost(), obj19) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj21) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj28) + ns.SetOwner(ns.GetHost(), obj25) + ns.SetOwner(ns.GetHost(), obj26) + ns.SetOwner(ns.GetHost(), obj23) + ns.SetOwner(ns.GetHost(), obj27) + ns.SetOwner(ns.GetHost(), obj35) + ns.SetOwner(ns.GetHost(), obj36) + ns.Music(17, 100) +} +func CivvyBump() { + var v0 int + if !flag46 { + goto LABEL1 + } + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar44 = ns.Random(1, 4) + v0 = ivar44 + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + if v0 == 4 { + goto LABEL5 + } + goto LABEL6 +LABEL2: + ns.Chat(ns.GetTrigger(), "Wiz02A.scr:CivvyTalk01") + goto LABEL6 +LABEL3: + ns.Chat(ns.GetTrigger(), "Wiz02A.scr:CivvyTalk02") + goto LABEL6 +LABEL4: + ns.Chat(ns.GetTrigger(), "Wiz02A.scr:CivvyTalk03") + goto LABEL6 +LABEL5: + ns.Chat(ns.GetTrigger(), "Wiz02A.scr:CivvyTalk04") + goto LABEL6 +LABEL6: + flag46 = false + ns.SecondTimer(3, ResetCivvyReady) +LABEL1: + return +} +func ResetCivvyReady() { + flag46 = true +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.AudioEvent(ns.RestoreHealthName, wp42) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, ns.Waypoint("WellWP")) +} +func MaxDialogStart() { + var v0 int + v0 = gvar53 + if v0 == gvar47 { + goto LABEL1 + } + if v0 == gvar48 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MaxOffer01") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MaxWaiting") + goto LABEL3 +LABEL3: + return +} +func MaxDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v0 = ns.GetAnswer(obj28) + v5 = v0 + if v5 == v4 { + goto LABEL1 + } + if v5 == v3 { + goto LABEL2 + } + if v5 == v2 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + gvar53 = gvar48 + ResetMaxDialog() + goto LABEL4 +LABEL2: + ns.SetDialog(obj28, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:TurnMaxDown") + gvar53 = gvar48 + goto LABEL4 +LABEL3: + v1 = ns.GetGold(ns.GetHost()) + if !(v1 >= 50000) { + goto LABEL5 + } + ns.SetDialog(obj28, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:HaveGoldForMax") + ns.ChangeGold(ns.GetHost(), -50000) + gvar53 = gvar52 + ns.UnlockDoor(obj29) + ns.UnlockDoor(obj30) + goto LABEL4 + goto LABEL4 +LABEL5: + ns.SetDialog(obj28, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:NoGoldForMax") + gvar53 = gvar48 + goto LABEL4 +LABEL4: + return +} +func PriestTalkStart() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj22) + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:PriestTalk01") +} +func PriestTalkEnd() { + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj22, ns.NORMAL, PriestTalkStart, PriestTalkEnd) +} +func UndertakerTalkStart() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj21) + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:UndertakerTalk01") +} +func UndertakerTalkEnd() { + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj21, ns.NORMAL, UndertakerTalkStart, UndertakerTalkEnd) +} +func GrillfTalkStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:GrillfTalk01") +} +func GrillfTalkEnd() { + ns.SetDialog(obj19, ns.NORMAL, GrillfTalkStart, GrillfTalkEnd) +} +func MlurghTalkStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:MlurghTalk01") +} +func MlurghTalkEnd() { + ns.SetDialog(obj20, ns.NORMAL, MlurghTalkStart, MlurghTalkEnd) +} +func WardenTalkStart() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj23) + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:WardenTalk01") +} +func WardenTalkEnd() { + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj23, ns.NORMAL, WardenTalkStart, WardenTalkEnd) +} +func GoAway() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func SpiderTrigger() { + if !ns.IsCaller(obj24) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.UnlockDoor(obj29) + ns.UnlockDoor(obj30) +LABEL1: + return +} +func BoothStart() { + ns.LookAtObject(obj25, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War03b:T4Post") +} +func BoothEnd() { +} +func Jump() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), obj38) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), obj39) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar40) + ns.Chat(obj36, "Con02a:BarMaiden2") + ns.SecondTimer(3, Upset) +LABEL1: + return +} +func Upset() { + ns.DestroyEveryChat() + ns.Chat(obj35, "Wiz02B.scr:LewisTalk06") + ns.SecondTimer(3, StartJump) +} +func StartJump() { + ns.WallGroupOpen(gvar41) + ns.Wander(obj35) +} +func MoveJumper() { + if !ns.IsCaller(obj35) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.CreatureIdle(obj35) + ns.ObjectOn(obj37) + ns.Chat(obj35, "Wiz02B.scr:LewisTalk03") +LABEL1: + return +} +func KillJumper() { + if !ns.IsCaller(obj35) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + ns.Damage(obj35, 0, 500, 0) + ns.WallGroupClose(gvar41) + ns.WallGroupClose(gvar40) + ns.NoWallSound(false) +LABEL1: + return +} +func NewMaxStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MaxOffer01") +} +func NewMaxEnd() { +} +func MaxSecret() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 500) +LABEL1: + return +} +func FireballSecret() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +LABEL1: + return +} +func MapInitialize() { + obj35 = ns.Object("TowerNPC") + obj36 = ns.Object("TowerMaiden") + obj37 = ns.Object("NPCMover") + gvar40 = ns.WallGroup("JumpWalls") + gvar41 = ns.WallGroup("FallWalls") + obj38 = ns.Object("SecretShirt") + obj39 = ns.Object("SecretApple") + obj13 = ns.Object("MageVendor") + obj15 = ns.Object("BookVendor") + obj14 = ns.Object("Shopkeeper1") + obj16 = ns.Object("Kincaid") + obj17 = ns.Object("BrightBlades") + obj18 = ns.Object("AppleMan") + obj19 = ns.Object("Grillf") + obj20 = ns.Object("Mlurgh") + obj21 = ns.Object("Undertaker") + obj22 = ns.Object("Priest") + obj23 = ns.Object("Warden") + obj24 = ns.Object("GoodSpider") + obj25 = ns.Object("F6Elite4") + obj26 = ns.Object("Maiden3") + obj27 = ns.Object("TowerNPC2") + obj28 = ns.Object("Max") + obj29 = ns.Object("MaxHomeDoor1") + obj30 = ns.Object("MaxHomeDoor2") + obj31 = ns.Object("GearRoomDoor") + obj32 = ns.Object("MorganCellDoor") + obj33 = ns.Object("FirstJailDoor") + obj34 = ns.Object("GuardDoor1") + wp42 = ns.Waypoint("PlayerSounds") + wp43 = ns.Waypoint("SecretSounds") + ns.SetDialog(obj28, ns.NORMAL, NewMaxStart, NewMaxEnd) + ns.SetDialog(obj22, ns.NORMAL, PriestTalkStart, PriestTalkEnd) + ns.SetDialog(obj21, ns.NORMAL, UndertakerTalkStart, UndertakerTalkEnd) + ns.SetDialog(obj23, ns.NORMAL, WardenTalkStart, WardenTalkEnd) + ns.SetDialog(obj25, ns.NORMAL, BoothStart, BoothEnd) + ns.StoryPic(obj23, "WardenPic") + ns.StoryPic(obj28, "MaxPic") + ns.StoryPic(obj21, "UndertakerPic") + ns.StoryPic(obj22, "GalavaPriestPic") + ns.StoryPic(obj25, "MalePic4") + ns.LockDoor(obj29) + ns.LockDoor(obj30) + ns.LockDoor(obj31) + ns.LockDoor(obj32) + ns.LockDoor(obj33) + ns.LockDoor(obj34) + DialogInit() + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func MaxEnter() { + if flag54 { + goto LABEL1 + } + flag54 = true + ns.Chat(obj28, "War07A.scr:MaxWelcome01") +LABEL1: + return +} +func MaxExit() { + flag54 = false +} +func ResetMaxDialog() { + if gvar53 != gvar52 { + goto LABEL1 + } + ns.CancelDialog(obj28) + goto LABEL2 +LABEL1: + ns.SetDialog(obj28, ns.YESNO, MaxDialogStart, MaxDialogEnd) +LABEL2: + return +} +func NullFunction() { +} +func Shopkeeper1Talk() { + if flag55 { + goto LABEL1 + } + flag55 = true + ns.Chat(obj14, "Con07B.scr:ShopkeeperTalk01") +LABEL1: + return +} +func ResetShopkeeper() { + flag55 = false +} +func BookShopEnter() { + if flag57 { + goto LABEL1 + } + flag57 = true + ns.Chat(obj15, "Con07B.scr:BookVendorTalk01") +LABEL1: + return +} +func BookShopExit() { + flag57 = false +} +func MagicShopEnter() { + if flag56 { + goto LABEL1 + } + flag56 = true + ns.Chat(obj13, "Con07B.scr:MageVendorTalk01") +LABEL1: + return +} +func MagicShopExit() { + flag56 = false +} +func ArmorShopEnter() { + if flag58 { + goto LABEL1 + } + flag58 = true + ns.Chat(obj16, "Con07B.scr:LoremanTalk01") +LABEL1: + return +} +func ArmorShopExit() { + flag58 = false +} +func WeaponShopEnter() { + if flag59 { + goto LABEL1 + } + flag59 = true + ns.Chat(obj17, "Con07B.scr:BrightBladesTalk01") +LABEL1: + return +} +func WeaponShopExit() { + flag59 = false +} +func AppleManRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Chat(obj18, "Con07B.scr:AppleManTalk01") +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con07b/dummy_test.go b/examples/con07b/dummy_test.go new file mode 100644 index 0000000..f75c0a3 --- /dev/null +++ b/examples/con07b/dummy_test.go @@ -0,0 +1,6 @@ +package con07b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con07c/con07c.go b/examples/con07c/con07c.go new file mode 100644 index 0000000..9ace924 --- /dev/null +++ b/examples/con07c/con07c.go @@ -0,0 +1,253 @@ +package con07c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + gvar23 ns.ObjectGroupID + gvar24 ns.ObjectGroupID + obj25 ns.ObjectID + obj26 ns.ObjectID + gvar27 ns.ObjectGroupID + gvar28 ns.ObjectGroupID + gvar29 ns.ObjectGroupID + wp30 ns.WaypointID +) + +func CreatureSetup() { + if !(ns.CurrentHealth(obj4) > 0) { + goto LABEL1 + } + ns.CreatureHunt(obj4) +LABEL1: + if !(ns.CurrentHealth(obj5) > 0) { + goto LABEL2 + } + ns.CreatureHunt(obj5) +LABEL2: + if !(ns.CurrentHealth(obj6) > 0) { + goto LABEL3 + } + ns.CreatureHunt(obj6) +LABEL3: + if !(ns.CurrentHealth(obj7) > 0) { + goto LABEL4 + } + ns.CreatureHunt(obj7) +LABEL4: + if !(ns.CurrentHealth(obj8) > 0) { + goto LABEL5 + } + ns.CreatureHunt(obj8) +LABEL5: + if !(ns.CurrentHealth(obj9) > 0) { + goto LABEL6 + } + ns.CreatureHunt(obj9) +LABEL6: + if !(ns.CurrentHealth(obj10) > 0) { + goto LABEL7 + } + ns.CreatureHunt(obj10) +LABEL7: + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL8 + } + ns.CreatureHunt(obj11) +LABEL8: + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL9 + } + ns.CreatureHunt(obj12) +LABEL9: + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL10 + } + ns.CreatureHunt(obj13) +LABEL10: + if !(ns.CurrentHealth(obj14) > 0) { + goto LABEL11 + } + ns.CreatureHunt(obj14) +LABEL11: + if !(ns.CurrentHealth(obj15) > 0) { + goto LABEL12 + } + ns.CreatureHunt(obj15) +LABEL12: + if !(ns.CurrentHealth(obj16) > 0) { + goto LABEL13 + } + ns.CreatureHunt(obj16) +LABEL13: + if !(ns.CurrentHealth(obj17) > 0) { + goto LABEL14 + } + ns.CreatureHunt(obj17) +LABEL14: + if !(ns.CurrentHealth(obj18) > 0) { + goto LABEL15 + } + ns.CreatureHunt(obj18) +LABEL15: + if !(ns.CurrentHealth(obj19) > 0) { + goto LABEL16 + } + ns.CreatureHunt(obj19) +LABEL16: + if !(ns.CurrentHealth(obj20) > 0) { + goto LABEL17 + } + ns.CreatureHunt(obj20) +LABEL17: + ns.SetOwner(ns.GetHost(), obj10) + ns.SetOwner(ns.GetHost(), obj11) + ns.SetOwner(ns.GetHost(), obj12) + ns.SetOwner(ns.GetHost(), obj13) + ns.SetOwner(ns.GetHost(), obj14) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj16) + ns.SetOwner(ns.GetHost(), obj17) + ns.SetOwner(ns.GetHost(), obj18) + ns.SetOwner(ns.GetHost(), obj19) + ns.SetOwner(ns.GetHost(), obj20) +} +func FirstSetPiece() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if r1 { + goto LABEL1 + } + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.AggressionLevel(obj10, 0) + ns.ObjectOn(obj10) + ns.Move(obj10, wp30) + ns.LookAtObject(ns.GetHost(), obj10) +LABEL1: + return +} +func PCMageTalk() { + ns.Frozen(obj10, true) + ns.CreatureIdle(obj10) + ns.LookAtObject(obj10, ns.GetHost()) + ns.SetDialog(obj10, ns.NORMAL, PCMageStart, PCMageEnd) + ns.StoryPic(obj10, "WizardGuard4Pic") + ns.StartDialog(obj10, ns.GetHost()) +} +func EndSetPiece() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj10, false) + ns.ObjectOn(obj10) + ns.ObjectGroupOn(gvar29) + ns.CreatureHunt(obj10) + ns.WideScreen(false) + ns.ObjectGroupOff(gvar28) +} +func StartTrapWiz() { + ns.ObjectGroupOn(gvar27) +} +func StartCenter() { + ns.ObjectGroupOff(gvar24) + ns.ObjectGroupOn(gvar23) + if !(ns.CurrentHealth(obj15) > 0) { + goto LABEL1 + } + ns.CreatureHunt(obj15) +LABEL1: + if !(ns.CurrentHealth(obj16) > 0) { + goto LABEL2 + } + ns.CreatureHunt(obj16) +LABEL2: + if !(ns.CurrentHealth(obj17) > 0) { + goto LABEL3 + } + ns.CreatureHunt(obj17) +LABEL3: + return +} +func FollowPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !(ns.CurrentHealth(ns.GetTrigger()) > 0) { + goto LABEL1 + } + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) +LABEL1: + return +} +func PCMageStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con07:MiscMage03") +} +func PCMageEnd() { + ns.CancelDialog(obj10) + EndSetPiece() +} +func MapInitialize() { + obj4 = ns.Object("OgreHunter1") + obj5 = ns.Object("OgreHunter2") + obj6 = ns.Object("OgreHunter3") + obj7 = ns.Object("OgreHunter4") + obj8 = ns.Object("OgreHunter5") + obj9 = ns.Object("OgreHunter6") + obj10 = ns.Object("Ganem") + obj11 = ns.Object("PCMage2") + obj12 = ns.Object("PCMage3") + obj13 = ns.Object("PCMage4") + obj14 = ns.Object("PCMage5") + obj15 = ns.Object("PCMage6") + obj16 = ns.Object("PCMage7") + obj17 = ns.Object("PCMage8") + obj18 = ns.Object("PCMage9") + obj19 = ns.Object("PCMage10") + obj20 = ns.Object("PCMage11") + obj21 = ns.Object("SetOgre1") + obj22 = ns.Object("SetOgre2") + gvar23 = ns.ObjectGroup("CenterSetPiece") + gvar24 = ns.ObjectGroup("CenterTriggers") + obj25 = ns.Object("ArchiveGate1") + obj26 = ns.Object("ArchiveGate2") + gvar27 = ns.ObjectGroup("KeyRoomSetPiece") + gvar28 = ns.ObjectGroup("FirstSetPieceTriggers") + gvar29 = ns.ObjectGroup("AllOgres") + wp30 = ns.Waypoint("PCMage1WP") + ns.ObjectGroupOff(gvar27) + ns.ObjectGroupOff(gvar29) +} +func MapEntry() { + ns.WideScreen(false) + ns.Music(27, 100) + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con07c/dummy_test.go b/examples/con07c/dummy_test.go new file mode 100644 index 0000000..caa77f5 --- /dev/null +++ b/examples/con07c/dummy_test.go @@ -0,0 +1,6 @@ +package con07c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con07d/con07d.go b/examples/con07d/con07d.go new file mode 100644 index 0000000..e84505c --- /dev/null +++ b/examples/con07d/con07d.go @@ -0,0 +1,224 @@ +package con07d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + wp5 ns.WaypointID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + gvar18 ns.ObjectGroupID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + gvar30 ns.ObjectGroupID + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + gvar34 ns.WallID +) + +func CreatureSetup() { + if !(ns.CurrentHealth(obj6) > 0) { + goto LABEL1 + } + ns.CreatureHunt(obj6) +LABEL1: + if !(ns.CurrentHealth(obj7) > 0) { + goto LABEL2 + } + ns.CreatureHunt(obj7) +LABEL2: + ns.SetOwner(ns.GetHost(), obj10) + ns.SetOwner(ns.GetHost(), obj13) + ns.SetOwner(ns.GetHost(), obj14) + ns.SetOwner(ns.GetHost(), obj8) + ns.SetOwner(ns.GetHost(), obj9) + ns.ObjectOn(obj24) + ns.ObjectOn(obj25) + if !(ns.CurrentHealth(obj8) > 0) { + goto LABEL3 + } + ns.CreatureHunt(obj8) +LABEL3: + if !(ns.CurrentHealth(obj9) > 0) { + goto LABEL4 + } + ns.CreatureHunt(obj9) +LABEL4: + return +} +func StartMageA() { + ns.ObjectGroupOn(gvar18) +} +func OpenBookcase1() { + ns.ObjectOn(obj26) + ns.ObjectOn(obj27) + ns.WallOpen(gvar34) +} +func CornerSetPiece() { + ns.ObjectOn(obj10) + ns.ObjectGroupOn(gvar30) + ns.ObjectOff(obj29) + ns.HitFarLocation(obj11, ns.GetObjectX(obj10), ns.GetObjectY(obj10)) + ns.HitFarLocation(obj12, ns.GetObjectX(obj10), ns.GetObjectY(obj10)) +} +func CorneredWizardDie() { + ns.Chat(obj10, "War04a:GraveRobberDie") +} +func StartGearRoom() { + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL1 + } + ns.Chat(obj14, "Con07C.scr:OpeningHelp") + ns.ObjectOn(obj14) +LABEL1: + ns.ObjectOn(obj13) + ns.ObjectGroupOn(gvar31) + ns.ObjectGroupOff(gvar33) + CheckGearDemonHealth() +} +func ActivateGears() { + if !ns.IsObjectOn(obj19) { + goto LABEL1 + } + ns.FrameTimer(1, StopGears) + goto LABEL2 +LABEL1: + ns.FrameTimer(1, StartGears) +LABEL2: + return +} +func StartGears() { + ns.ObjectGroupOn(gvar32) + ns.ObjectOn(obj20) + ns.ObjectOn(obj21) +} +func StopGears() { + ns.ObjectGroupOff(gvar32) + ns.ObjectOff(obj20) + ns.ObjectOff(obj21) + ns.ObjectOff(obj22) + ns.ObjectOff(obj23) +} +func CheckGearDemonHealth() { + if !(ns.CurrentHealth(obj15) <= 0 && ns.CurrentHealth(obj16) <= 0 && ns.CurrentHealth(obj17) <= 0) { + goto LABEL1 + } + ns.CreatureGuard(obj13, ns.GetObjectX(obj13), ns.GetObjectY(obj13), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj14, ns.GetObjectX(obj14), ns.GetObjectY(obj14), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL2 + } + ns.SetDialog(obj13, ns.NORMAL, GearWizStart, GearWizEnd) + ns.StoryPic(obj13, "WizardGuard1Pic") + goto LABEL3 +LABEL2: + if !(ns.CurrentHealth(obj14) > 0) { + goto LABEL3 + } + ns.SetDialog(obj14, ns.NORMAL, GearWizStart, GearWizEnd) + ns.StoryPic(obj14, "WizardGuard2Pic") +LABEL3: + goto LABEL4 +LABEL1: + ns.FrameTimer(15, CheckGearDemonHealth) +LABEL4: + return +} +func GearWizStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con07:MiscMage02") +} +func GearWizEnd() { + ns.CancelDialog(obj13) + ns.CancelDialog(obj14) +} +func FollowPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !(ns.CurrentHealth(ns.GetTrigger()) > 0) { + goto LABEL1 + } + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) +LABEL1: + return +} +func CancelBubble() { + ns.DestroyChat(ns.GetTrigger()) +} +func MapInitialize() { + obj8 = ns.Object("PCMageA") + obj9 = ns.Object("PCMageB") + obj10 = ns.Object("CorneredWizard") + obj11 = ns.Object("CDemon1") + obj12 = ns.Object("CDemon2") + obj13 = ns.Object("Ganem") + obj14 = ns.Object("Kelvin") + obj15 = ns.Object("GearDemon1") + obj16 = ns.Object("GearDemon2") + obj17 = ns.Object("GearDemon3") + gvar18 = ns.ObjectGroup("MageAGroup") + obj19 = ns.Object("TestGear") + obj20 = ns.Object("Globe1") + obj21 = ns.Object("Globe2") + obj22 = ns.Object("Globe3") + obj23 = ns.Object("Globe4") + obj24 = ns.Object("Globe1Mover") + obj25 = ns.Object("Globe2Mover") + obj26 = ns.Object("Bookcase1Mover") + obj27 = ns.Object("Bookcase2Mover") + obj4 = ns.Object("ToLevelOneTP") + obj28 = ns.Object("ToThreeTP") + obj29 = ns.Object("CornerTrigger") + gvar30 = ns.ObjectGroup("CornerDemons") + gvar31 = ns.ObjectGroup("GearDemons") + gvar32 = ns.ObjectGroup("Level2Gears") + gvar33 = ns.ObjectGroup("StartGearRoomTriggers") + gvar34 = ns.Wall(142, 54) + wp5 = ns.Waypoint("PlayerSounds") + ns.ObjectOff(obj10) + ns.ObjectOff(obj13) + ns.ObjectOff(obj14) + ns.ObjectGroupOff(gvar31) + ns.ObjectGroupOff(gvar30) + ns.ObjectGroupOff(gvar18) + ns.SetOwner(ns.GetHost(), obj10) + ns.SetOwner(ns.GetHost(), obj13) + ns.SetOwner(ns.GetHost(), obj14) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func MapEntry() { + ns.Music(27, 100) + ns.FrameTimer(1, CreatureSetup) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con07d/dummy_test.go b/examples/con07d/dummy_test.go new file mode 100644 index 0000000..afc0118 --- /dev/null +++ b/examples/con07d/dummy_test.go @@ -0,0 +1,6 @@ +package con07d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con07e/con07e.go b/examples/con07e/con07e.go new file mode 100644 index 0000000..8ab26e8 --- /dev/null +++ b/examples/con07e/con07e.go @@ -0,0 +1,157 @@ +package con07e + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + gvar19 ns.ObjectGroupID + gvar20 ns.ObjectGroupID + obj21 ns.ObjectID + gvar22 ns.ObjectGroupID + gvar23 ns.ObjectGroupID + gvar24 ns.ObjectGroupID + gvar25 ns.WallGroupID + wp26 ns.WaypointID + wp27 ns.WaypointID +) + +func CreatureSetup() { + if !(ns.CurrentHealth(obj4) > 0) { + goto LABEL1 + } + ns.CreatureHunt(obj4) +LABEL1: + if !(ns.CurrentHealth(obj5) > 0) { + goto LABEL2 + } + ns.CreatureHunt(obj5) +LABEL2: + if !(ns.CurrentHealth(obj6) > 0) { + goto LABEL3 + } + ns.CreatureHunt(obj6) +LABEL3: + if !(ns.CurrentHealth(obj7) > 0) { + goto LABEL4 + } + ns.CreatureHunt(obj7) +LABEL4: + if !(ns.CurrentHealth(obj8) > 0) { + goto LABEL5 + } + ns.CreatureHunt(obj8) +LABEL5: + if !(ns.CurrentHealth(obj9) > 0) { + goto LABEL6 + } + ns.CreatureHunt(obj9) +LABEL6: + if !(ns.CurrentHealth(obj10) > 0) { + goto LABEL7 + } + ns.CreatureHunt(obj10) +LABEL7: + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL8 + } + ns.CreatureHunt(obj11) +LABEL8: + ns.SetOwner(ns.GetHost(), obj12) + ns.SetOwner(ns.GetHost(), obj13) + ns.SetOwner(ns.GetHost(), obj14) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj16) + ns.SetOwner(ns.GetHost(), obj17) + ns.SetOwner(ns.GetHost(), obj18) +} +func StartImpDemon() { + ns.ObjectGroupOn(gvar23) + ns.ObjectGroupOn(gvar24) + ns.WayPointOn(wp26) + ns.WayPointOn(wp27) + ns.ObjectGroupOff(gvar19) + ns.ObjectGroupOff(gvar20) + ns.ObjectOff(obj21) +} +func FollowPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !(ns.CurrentHealth(ns.GetTrigger()) > 0) { + goto LABEL1 + } + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) +LABEL1: + return +} +func EnableMuseum() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar22) + ns.WallGroupOpen(gvar25) +LABEL1: + return +} +func MapInitialize() { + obj4 = ns.Object("MuseumDemon1") + obj5 = ns.Object("MuseumDemon2") + obj6 = ns.Object("MuseumDemon3") + obj7 = ns.Object("MuseumDemon4") + obj8 = ns.Object("MuseumDemon5") + obj9 = ns.Object("MuseumDemon6") + obj10 = ns.Object("MuseumDemon7") + obj11 = ns.Object("MuseumDemon8") + obj12 = ns.Object("Kheldon") + obj13 = ns.Object("Dalmen") + obj14 = ns.Object("Imp1") + obj15 = ns.Object("Imp2") + obj16 = ns.Object("Imp3") + obj17 = ns.Object("Imp4") + obj18 = ns.Object("Imp5") + gvar22 = ns.ObjectGroup("MuseumDemons") + gvar19 = ns.ObjectGroup("ImpDemonTriggers") + gvar20 = ns.ObjectGroup("ImpDemonTriggers2") + obj21 = ns.Object("ImpDemonTrigger3") + gvar23 = ns.ObjectGroupID(ns.Object("FloorThreeSetPiece")) // FIXME + gvar24 = ns.ObjectGroupID(ns.Object("KheldonGroup")) // FIXME + wp26 = ns.Waypoint("ImpWP1") + wp27 = ns.Waypoint("ImpWP2") + ns.WayPointOff(wp26) + ns.WayPointOff(wp27) + ns.ObjectGroupOff(gvar23) + ns.ObjectGroupOff(gvar24) + ns.ObjectGroupOff(gvar22) + ns.FrameTimer(1, CreatureSetup) +} +func MapEntry() { + ns.Music(27, 100) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con07e/dummy_test.go b/examples/con07e/dummy_test.go new file mode 100644 index 0000000..6421780 --- /dev/null +++ b/examples/con07e/dummy_test.go @@ -0,0 +1,6 @@ +package con07e + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con07f/con07f.go b/examples/con07f/con07f.go new file mode 100644 index 0000000..99bebad --- /dev/null +++ b/examples/con07f/con07f.go @@ -0,0 +1,245 @@ +package con07f + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + gvar37 ns.WallGroupID + gvar38 ns.WallGroupID + gvar39 ns.WallGroupID + gvar40 int + flag41 bool + flag42 bool + flag43 bool + flag44 bool + flag45 bool + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID +) + +func init() { + gvar40 = 0 + flag41 = false + flag42 = false + flag43 = false + flag44 = false + flag45 = false +} +func CreatureSetup() { + ns.SetOwner(obj35, obj4) + ns.SetOwner(obj35, obj5) + ns.SetOwner(obj35, obj6) + ns.SetOwner(obj35, obj7) + ns.SetOwner(obj35, obj8) + ns.SetOwner(obj35, obj9) + ns.SetOwner(obj35, obj10) + ns.SetOwner(obj35, obj11) + ns.SetOwner(obj35, obj12) + ns.SetOwner(obj35, obj13) + ns.SetOwner(obj35, obj14) + ns.SetOwner(obj35, obj15) + ns.SetOwner(obj35, obj16) + ns.SetOwner(obj35, obj17) + ns.SetOwner(obj35, obj18) + ns.SetOwner(obj35, obj19) + ns.SetOwner(obj35, obj20) + ns.SetOwner(obj35, obj21) + ns.SetOwner(obj35, obj22) + ns.SetOwner(obj35, obj23) + ns.SetOwner(obj35, obj24) + ns.SetOwner(obj35, obj25) + ns.SetOwner(obj35, obj26) + ns.SetOwner(ns.GetHost(), obj30) + ns.SetOwner(ns.GetHost(), obj31) + ns.SetOwner(ns.GetHost(), obj32) + if !(ns.CurrentHealth(obj30) > 0) { + goto LABEL1 + } + ns.CreatureHunt(obj30) +LABEL1: + if !(ns.CurrentHealth(obj31) > 0) { + goto LABEL2 + } + ns.CreatureHunt(obj31) +LABEL2: + if !(ns.CurrentHealth(obj32) > 0) { + goto LABEL3 + } + ns.CreatureHunt(obj32) +LABEL3: + return +} +func CreateDemons() { +} +func DemonSpawnCheck() { + flag42 = true +} +func WallSetOneButton() { + if flag43 { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar37) + flag43 = true +LABEL1: + return +} +func WallSetTwoButton() { + if flag44 { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar38) + flag44 = true +LABEL1: + return +} +func WallSetThreeButton() { + if flag45 { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar39) + flag45 = true + ns.ObjectOn(obj36) +LABEL1: + return +} +func BlockTrap() { + if ns.IsObjectOn(obj33) { + goto LABEL1 + } + ns.ObjectOn(obj33) + ns.Move(obj33, wp53) +LABEL1: + return +} +func BlockAtWP1() { + if !ns.IsCaller(obj34) { + goto LABEL1 + } + ns.MoveWaypoint(wp52, ns.GetObjectX(obj34), ns.GetObjectY(obj34)) + ns.AudioEvent(ns.HammerMissing, wp52) + ns.Effect(ns.JIGGLE, ns.GetObjectX(obj34), ns.GetObjectY(obj34), 10, 0) + ns.Move(obj33, wp54) +LABEL1: + return +} +func BlockAtWP2() { +} +func MapInitialize() { + obj4 = ns.Object("EmberDemon1") + obj5 = ns.Object("EmberDemon2") + obj6 = ns.Object("EmberDemon3") + obj7 = ns.Object("EmberDemon4") + obj8 = ns.Object("EmberDemon5") + obj9 = ns.Object("EmberDemon6") + obj10 = ns.Object("EmberDemon7") + obj11 = ns.Object("EmberDemon8") + obj12 = ns.Object("EmberDemon9") + obj13 = ns.Object("EmberDemon10") + obj14 = ns.Object("EmberDemon11") + obj15 = ns.Object("EmberDemon12") + obj16 = ns.Object("EmberDemon13") + obj17 = ns.Object("EmberDemon14") + obj18 = ns.Object("EmberDemon15") + obj19 = ns.Object("EmberDemon16") + obj20 = ns.Object("EmberDemon17") + obj21 = ns.Object("EmberDemon18") + obj22 = ns.Object("EmberDemon19") + obj23 = ns.Object("EmberDemon20") + obj24 = ns.Object("EmberDemon21") + obj25 = ns.Object("EmberDemon22") + obj26 = ns.Object("EmberDemon23") + obj27 = ns.Object("EmberDemon24") + obj28 = ns.Object("EmberDemon25") + obj29 = ns.Object("EmberDemon26") + obj30 = ns.Object("PCMage4A") + obj31 = ns.Object("PCMage4B") + obj32 = ns.Object("PCMage4C") + obj33 = ns.Object("Block1Mover") + obj34 = ns.Object("Block1") + obj35 = ns.Object("StoolOfWonder") + obj36 = ns.Object("MainTeleporter") + gvar37 = ns.WallGroup("WallSetOne") + gvar38 = ns.WallGroup("WallSetTwo") + gvar39 = ns.WallGroup("WallSetThree") + wp46 = ns.Waypoint("DemonSpawn1WP") + wp47 = ns.Waypoint("DemonSpawn2WP") + wp48 = ns.Waypoint("DemonSpawn3WP") + wp49 = ns.Waypoint("DemonSpawn4WP") + wp50 = ns.Waypoint("DemonSpawn5WP") + wp51 = ns.Waypoint("DemonSpawn6WP") + wp52 = ns.Waypoint("PlayerSounds") + wp53 = ns.Waypoint("BlockWP1") + wp54 = ns.Waypoint("BlockWP2") + ns.ObjectOff(obj36) + ns.FrameTimer(1, CreatureSetup) + CreateDemons() +} +func MapEntry() { + ns.Music(28, 100) +} +func FollowPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !(ns.CurrentHealth(ns.GetTrigger()) > 0) { + goto LABEL1 + } + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con07f/dummy_test.go b/examples/con07f/dummy_test.go new file mode 100644 index 0000000..4cccb27 --- /dev/null +++ b/examples/con07f/dummy_test.go @@ -0,0 +1,6 @@ +package con07f + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con07g/con07g.go b/examples/con07g/con07g.go new file mode 100644 index 0000000..af9a09f --- /dev/null +++ b/examples/con07g/con07g.go @@ -0,0 +1,22 @@ +package con07g + +import "github.com/noxworld-dev/noxscript/ns/v3" + +func MapInitialize() { +} +func MapEntry() { + ns.Music(28, 100) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con07g/dummy_test.go b/examples/con07g/dummy_test.go new file mode 100644 index 0000000..e02dbf7 --- /dev/null +++ b/examples/con07g/dummy_test.go @@ -0,0 +1,6 @@ +package con07g + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con07h/con07h.go b/examples/con07h/con07h.go new file mode 100644 index 0000000..dc1d355 --- /dev/null +++ b/examples/con07h/con07h.go @@ -0,0 +1,657 @@ +package con07h + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + flag5 bool + wp6 ns.WaypointID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + wp19 ns.WaypointID + wp20 ns.WaypointID + wp21 ns.WaypointID + wp22 ns.WaypointID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + gvar54 ns.ObjectGroupID + gvar55 ns.WallGroupID + gvar56 ns.WallGroupID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + obj80 ns.ObjectID + obj81 ns.ObjectID + gvar82 int + gvar83 ns.ObjectGroupID + gvar84 ns.ObjectGroupID + gvar85 ns.ObjectGroupID + gvar86 ns.ObjectGroupID + gvar87 ns.ObjectGroupID + gvar88 ns.ObjectGroupID + gvar89 ns.ObjectGroupID + gvar90 ns.ObjectGroupID + gvar91 ns.ObjectGroupID + gvar92 ns.ObjectGroupID + flag93 bool + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + gvar97 ns.TimerID + ivar98 int + ivar99 int + fvar100 float32 + fvar101 float32 + fvar102 float32 + fvar103 float32 + fvar104 float32 + fvar105 float32 + fvar106 float32 + fvar107 float32 + fvar108 float32 + fvar109 float32 + fvar110 float32 + fvar111 float32 + fvar112 float32 + fvar113 float32 + fvar114 float32 + fvar115 float32 + fvar116 float32 + fvar117 float32 + fvar118 float32 + fvar119 float32 + flag120 bool + flag121 bool + flag122 bool + flag123 bool + flag124 bool +) + +func init() { + flag5 = false + flag93 = false + ivar98 = 0 + ivar99 = 0 + flag120 = false + flag121 = false + flag122 = false + flag123 = false + flag124 = false +} +func CreatureSetup() { + ns.SetOwner(obj7, obj12) + ns.SetOwner(obj7, obj13) + fvar100 = ns.GetObjectX(obj33) + fvar101 = ns.GetObjectX(obj34) + fvar102 = ns.GetObjectX(obj35) + fvar103 = ns.GetObjectX(obj36) + fvar104 = ns.GetObjectX(obj37) + fvar105 = ns.GetObjectX(obj38) + fvar106 = ns.GetObjectX(obj39) + fvar107 = ns.GetObjectX(obj40) + fvar108 = ns.GetObjectX(obj41) + fvar109 = ns.GetObjectX(obj42) + fvar110 = ns.GetObjectY(obj33) + fvar111 = ns.GetObjectY(obj34) + fvar112 = ns.GetObjectY(obj35) + fvar113 = ns.GetObjectY(obj36) + fvar114 = ns.GetObjectY(obj37) + fvar115 = ns.GetObjectY(obj38) + fvar116 = ns.GetObjectY(obj39) + fvar117 = ns.GetObjectY(obj40) + fvar118 = ns.GetObjectY(obj41) + fvar119 = ns.GetObjectY(obj42) +} +func StartChamber() { + ns.ObjectGroupOn(gvar84) + ns.ObjectGroupOn(gvar86) + ns.ObjectGroupOff(gvar83) + ns.ObjectGroupOff(gvar85) + flag93 = true + ns.SecondTimer(3, ChamberSpikes) +} +func ChamberSpikes() { + if flag93 { + goto LABEL1 + } + ns.ObjectGroupOff(gvar83) + ns.ObjectGroupOff(gvar85) + ns.FrameTimer(10, EnableSpikes2And4) + goto LABEL2 +LABEL1: + ns.ObjectGroupOff(gvar84) + ns.ObjectGroupOff(gvar86) + ns.FrameTimer(10, EnableSpikes1And3) +LABEL2: + gvar97 = ns.SecondTimer(3, ChamberSpikes) +} +func Block1Jiggle() { + ns.MoveWaypoint(wp6, ns.GetObjectX(obj80), ns.GetObjectY(obj80)) + ns.AudioEvent(ns.HammerMissing, wp6) + ns.Effect(ns.JIGGLE, ns.GetObjectX(obj80), ns.GetObjectY(obj80), 10, 0) +} +func Block2Jiggle() { + ns.AudioEvent(ns.HammerMissing, wp94) + ns.Effect(ns.JIGGLE, ns.GetObjectX(obj81), ns.GetObjectY(obj81), 10, 0) +} +func EnableSpikes2And4() { + ns.ObjectGroupOn(gvar84) + ns.ObjectGroupOn(gvar86) + flag93 = true +} +func EnableSpikes1And3() { + ns.ObjectGroupOn(gvar83) + ns.ObjectGroupOn(gvar85) + flag93 = false +} +func DemonDie() { + ivar99 += 1 + if !(ivar99 >= 3) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 1000) + ns.Music(1, 100) +LABEL1: + return +} +func Horvath1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Con07H.scr:HorvathTalk01") +} +func Horvath1End() { + ns.SetDialog(obj7, ns.NORMAL, Hecubah2Start, Hecubah2End) + ns.StartDialog(obj7, ns.GetHost()) +} +func Hecubah1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Con07H.scr:HecubahTalk01") +} +func Hecubah1End() { + ns.SetDialog(obj7, ns.NEXT, Hecubah2Start, Hecubah2End) + HorvathSpeak() +} +func MapInitialize() { + obj57 = ns.Object("SnakeHead1Mover") + obj58 = ns.Object("SnakeHead2Mover") + obj59 = ns.Object("SnakeHead3Mover") + obj60 = ns.Object("SnakeHead4Mover") + obj61 = ns.Object("SnakeHead5Mover") + obj62 = ns.Object("SnakeHead6Mover") + obj63 = ns.Object("SnakeHead7Mover") + obj64 = ns.Object("SnakeHead8Mover") + obj65 = ns.Object("SnakeHead9Mover") + obj66 = ns.Object("SnakeHead10Mover") + obj67 = ns.Object("SnakeHead11Mover") + obj68 = ns.Object("SnakeHead12Mover") + obj69 = ns.Object("Block1AMover") + obj70 = ns.Object("Block1BMover") + obj71 = ns.Object("Block2AMover") + obj72 = ns.Object("Block2BMover") + obj4 = ns.Object("ToLevelOneTP") + obj79 = ns.Object("ToThreeTP") + obj7 = ns.Object("Hecubah") + obj12 = ns.Object("Lord1") + obj13 = ns.Object("Lord2") + obj17 = ns.Object("DeadGuy1") + obj18 = ns.Object("DeadGuy2") + obj8 = ns.Object("HecDemon1") + obj9 = ns.Object("HecDemon2") + obj10 = ns.Object("HecDemon3") + obj11 = ns.Object("HecDemon4") + obj14 = ns.Object("Horvath") + obj15 = ns.Object("Marik") + obj16 = ns.Object("Mage2") + obj80 = ns.Object("Block1Trigger") + obj81 = ns.Object("Block2Trigger") + obj73 = ns.Object("ChamberDoor1") + obj74 = ns.Object("ChamberDoor2") + obj75 = ns.Object("ChamberDoor2A") + obj76 = ns.Object("ChamberDoor2B") + obj77 = ns.Object("ChamberExitDoor1") + obj78 = ns.Object("ChamberExitDoor2") + gvar83 = ns.ObjectGroup("ChamberSpikes1") + gvar84 = ns.ObjectGroup("ChamberSpikes2") + gvar85 = ns.ObjectGroup("ChamberSpikes3") + gvar86 = ns.ObjectGroup("ChamberSpikes4") + gvar87 = ns.ObjectGroup("SnakeLetterMovers") + gvar88 = ns.ObjectGroup("Snake3Movers") + gvar89 = ns.ObjectGroup("Snake4Movers") + gvar90 = ns.ObjectGroup("ShowdownTriggers") + wp6 = ns.Waypoint("PlayerSounds") + wp94 = ns.Waypoint("Jiggle2WP") + wp95 = ns.Waypoint("Traitor1WP") + wp96 = ns.Waypoint("Traitor2WP") + wp19 = ns.Waypoint("HecDemon1WP") + wp20 = ns.Waypoint("HecDemon2WP") + wp21 = ns.Waypoint("Lord1WP") + wp22 = ns.Waypoint("Lord2WP") + obj23 = ns.Object("HON") + obj24 = ns.Object("HONBase") + obj25 = ns.Object("PowerCell1") + obj26 = ns.Object("PowerCell2") + obj27 = ns.Object("PowerCell3") + obj28 = ns.Object("PowerCell4") + obj29 = ns.Object("PowerCell5") + obj30 = ns.Object("PowerCell6") + obj31 = ns.Object("PowerCell7") + obj32 = ns.Object("PowerCell8") + obj33 = ns.Object("HeartLight1") + obj34 = ns.Object("HeartLight2") + obj35 = ns.Object("HeartLight3") + obj36 = ns.Object("HeartLight4") + obj37 = ns.Object("HeartLight5") + obj38 = ns.Object("HeartLight6") + obj39 = ns.Object("HeartLight7") + obj40 = ns.Object("HeartLight8") + obj41 = ns.Object("HeartLight9") + obj42 = ns.Object("HeartLight10") + obj43 = ns.Object("NewLight1") + obj44 = ns.Object("NewLight2") + obj45 = ns.Object("NewLight3") + obj46 = ns.Object("NewLight4") + obj47 = ns.Object("NewLight5") + obj48 = ns.Object("NewLight6") + obj49 = ns.Object("NewLight7") + obj50 = ns.Object("NewLight8") + obj51 = ns.Object("NewLight9") + obj52 = ns.Object("NewLight10") + obj53 = ns.Object("Rain") + gvar54 = ns.ObjectGroup("PowerCells") + gvar91 = ns.ObjectGroup("TraitorTriggers") + gvar92 = ns.ObjectGroup("NewGroup") + gvar55 = ns.WallGroup("HONWalls") + gvar56 = ns.WallGroup("HONExitWalls") + ns.StoryPic(obj14, "HorvathPic") + ns.StoryPic(obj7, "HecubahPic") + ns.SetDialog(obj7, ns.NEXT, Hecubah1Start, Hecubah1End) + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func LightShow() { + var ( + v0 int + v1 int + ) + ns.MoveWaypoint(wp6, ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + v0 = ns.Random(1, 8) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + if v1 == 3 { + goto LABEL3 + } + if v1 == 4 { + goto LABEL4 + } + if v1 == 5 { + goto LABEL5 + } + if v1 == 6 { + goto LABEL6 + } + if v1 == 7 { + goto LABEL7 + } + if v1 == 8 { + goto LABEL8 + } + goto LABEL9 +LABEL1: + ns.AudioEvent(ns.LightningBolt, wp6) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj25), ns.GetObjectY(obj25), ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + goto LABEL9 +LABEL2: + ns.AudioEvent(ns.LightningBolt, wp6) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj26), ns.GetObjectY(obj26), ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + goto LABEL9 +LABEL3: + ns.AudioEvent(ns.LightningBolt, wp6) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj27), ns.GetObjectY(obj27), ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + goto LABEL9 +LABEL4: + ns.AudioEvent(ns.LightningBolt, wp6) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj28), ns.GetObjectY(obj28), ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + goto LABEL9 +LABEL5: + ns.AudioEvent(ns.LightningBolt, wp6) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj29), ns.GetObjectY(obj29), ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + goto LABEL9 +LABEL6: + ns.AudioEvent(ns.LightningBolt, wp6) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj30), ns.GetObjectY(obj30), ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + goto LABEL9 +LABEL7: + ns.AudioEvent(ns.LightningBolt, wp6) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj31), ns.GetObjectY(obj31), ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + goto LABEL9 +LABEL8: + ns.AudioEvent(ns.LightningBolt, wp6) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj32), ns.GetObjectY(obj32), ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + goto LABEL9 +LABEL9: + if flag123 { + goto LABEL10 + } + ns.FrameTimer(30, LightShow) +LABEL10: + return +} +func PlateOneTrigger() { + flag120 = true + if !(flag121 == true && flag122 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar55) +LABEL1: + return +} +func PlateTwoTrigger() { + flag121 = true + if !(flag120 == true && flag122 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar55) +LABEL1: + return +} +func PlateThreeTrigger() { + flag122 = true + if !(flag120 == true && flag121 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar55) +LABEL1: + return +} +func PlateOneRelease() { + flag120 = false +} +func PlateTwoRelease() { + flag121 = false +} +func PlateThreeRelease() { + flag122 = false +} +func HONTrigger() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(obj33) + ns.ObjectOff(obj34) + ns.ObjectOff(obj35) + ns.ObjectOff(obj36) + ns.ObjectOff(obj37) + ns.ObjectOff(obj38) + ns.ObjectOff(obj39) + ns.ObjectOff(obj40) + ns.ObjectOff(obj41) + ns.ObjectOff(obj42) + ns.MoveObject(obj43, fvar100, fvar110) + ns.MoveObject(obj44, fvar101, fvar111) + ns.MoveObject(obj45, fvar102, fvar112) + ns.MoveObject(obj46, fvar103, fvar113) + ns.MoveObject(obj47, fvar104, fvar114) + ns.MoveObject(obj48, fvar105, fvar115) + ns.MoveObject(obj49, fvar106, fvar116) + ns.MoveObject(obj50, fvar107, fvar117) + ns.MoveObject(obj51, fvar108, fvar118) + ns.MoveObject(obj52, fvar109, fvar119) + ns.ObjectOff(obj23) + ns.ObjectOff(obj24) + flag123 = true + ns.SetHalberd(1) + ns.PrintToAll("Con07H.scr:HONTada") + ns.JournalEdit(ns.GetHost(), "GetHON", 4) + ns.SecondTimer(2, FadeOut) +LABEL1: + return +} +func MakeMapSwitch() { + ns.MoveObject(ns.GetHost(), 2149, 2151) +} +func FadeOut() { + ns.Blind() + ns.Music(0, 100) + ns.FrameTimer(45, MakeMapSwitch) +} +func BeginShowdownPiece() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if flag5 { + goto LABEL1 + } + flag5 = true + ns.WideScreen(true) + ns.Music(7, 100) + ns.SetDialog(obj14, ns.NEXT, Horvath1Start, Horvath1End) + ns.MoveWaypoint(wp6, 2133, 1410) + ns.AudioEvent(ns.TeleportIn, wp6) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp6), ns.GetWaypointY(wp6), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp6), ns.GetWaypointY(wp6), 0, 0) + ns.Effect(ns.LESSER_EXPLOSION, ns.GetWaypointX(wp6), ns.GetWaypointY(wp6), 0, 0) + ns.MoveObject(obj7, ns.GetWaypointX(wp6), ns.GetWaypointY(wp6)) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp21), ns.GetWaypointY(wp21), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp21), ns.GetWaypointY(wp21), 0, 0) + ns.Effect(ns.LESSER_EXPLOSION, ns.GetWaypointX(wp21), ns.GetWaypointY(wp21), 0, 0) + ns.MoveObject(obj12, ns.GetWaypointX(wp21), ns.GetWaypointY(wp21)) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp22), ns.GetWaypointY(wp22), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp22), ns.GetWaypointY(wp22), 0, 0) + ns.Effect(ns.LESSER_EXPLOSION, ns.GetWaypointX(wp22), ns.GetWaypointY(wp22), 0, 0) + ns.MoveObject(obj13, ns.GetWaypointX(wp22), ns.GetWaypointY(wp22)) + ns.Frozen(ns.GetHost(), true) + ns.CreatureGuard(obj7, ns.GetObjectX(obj7), ns.GetObjectY(obj7), ns.GetObjectX(obj14), ns.GetObjectY(obj14), 0) + ns.Frozen(obj7, true) + ns.Frozen(obj12, true) + ns.Frozen(obj13, true) + ns.LookAtObject(obj7, obj14) + ns.ObjectGroupOff(gvar92) + ns.SecondTimer(1, HorvathSpeak) +LABEL1: + return +} +func HorvathSpeak() { + ns.StartDialog(obj14, ns.GetHost()) +} +func HecubahSpeak() { + ns.StartDialog(obj7, ns.GetHost()) +} +func BeginFireworks() { + ns.ObjectOn(obj7) + ns.ObjectOn(obj14) + ns.ObjectOn(obj15) + ns.ObjectOn(obj16) +} +func HorvathDied() { + ns.Frozen(obj14, true) + ns.SetDialog(obj14, ns.NEXT, Horvath2Start, Horvath2End) + ns.StartDialog(obj14, ns.GetHost()) +} +func Horvath2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Con07H.scr:HorvathTalk02") +} +func Horvath2End() { + ns.Frozen(obj14, false) + ns.CancelDialog(obj14) + ns.CastSpellLocationLocation(ns.SPELL_TURN_UNDEAD, ns.GetObjectX(obj14), ns.GetObjectY(obj14), ns.GetObjectX(obj14), ns.GetObjectY(obj14)) + ns.Frozen(obj12, false) + ns.Frozen(obj13, false) + ns.ObjectOn(obj15) + ns.ObjectOn(obj16) + ns.ObjectOn(obj12) + ns.ObjectOn(obj13) + ns.HitFarLocation(obj12, ns.GetObjectX(obj15), ns.GetObjectY(obj15)) + ns.HitFarLocation(obj13, ns.GetObjectX(obj16), ns.GetObjectY(obj16)) + ns.SecondTimer(2, EraseHorvath) + ns.SecondTimer(1, HecKill1) +} +func Hecubah2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Con07H.scr:HecubahTalk03") +} +func Hecubah2End() { + ns.ObjectOn(obj14) + ns.ObjectOn(obj7) + ns.CastSpellLocationLocation(ns.SPELL_DEATH_RAY, ns.GetObjectX(obj7), ns.GetObjectY(obj7), ns.GetObjectX(obj14), ns.GetObjectY(obj14)) + ns.SecondTimer(1, SecondDeathRay) +} +func Hecubah3Start() { + ns.TellStory(ns.HumanMaleEatFood, "Con07H.scr:HecubahTalk04") +} +func Hecubah3End() { + ns.MoveWaypoint(wp6, ns.GetObjectX(obj7), ns.GetObjectY(obj7)) + ns.AudioEvent(ns.TeleportOut, wp6) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp6), ns.GetWaypointY(wp6), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp6), ns.GetWaypointY(wp6), 0, 0) + ns.Effect(ns.LESSER_EXPLOSION, ns.GetWaypointX(wp6), ns.GetWaypointY(wp6), 0, 0) + ns.Delete(obj7) + ns.SetDialog(obj15, ns.NORMAL, TestStart, TestEnd) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.StoryPic(obj15, "WizardGuard1Pic") + ns.SetDialog(obj15, ns.NORMAL, MarikTalkStart, MarikTalkEnd) + MarikTalk() +} +func HecubahPoof() { + ns.StartDialog(obj7, ns.GetHost()) +} +func TestStart() { + ns.Delete(obj8) +} +func TestEnd() { + ns.CancelDialog(obj15) +} +func MarikTalk() { + if !(ns.Distance(ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), ns.GetObjectX(obj15), ns.GetObjectY(obj15)) < 150) { + goto LABEL1 + } + if flag124 { + goto LABEL2 + } + ns.StartDialog(obj15, ns.GetHost()) + flag124 = true +LABEL2: + goto LABEL3 +LABEL1: + if flag124 { + goto LABEL3 + } + ns.FrameTimer(8, MarikTalk) +LABEL3: + return +} +func MarikTalkStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con07H.scr:MarikTalk02") + flag124 = true +} +func MarikTalkEnd() { + ns.SetDialog(obj15, ns.NORMAL, MarikTalkStart, MarikTalkEnd) +} +func SecondDeathRay() { + ns.CastSpellLocationLocation(ns.SPELL_DEATH_RAY, ns.GetObjectX(obj7), ns.GetObjectY(obj7), ns.GetObjectX(obj14), ns.GetObjectY(obj14)) + ns.SecondTimer(1, ThirdDeathRay) +} +func ThirdDeathRay() { + ns.CastSpellLocationLocation(ns.SPELL_DEATH_RAY, ns.GetObjectX(obj7), ns.GetObjectY(obj7), ns.GetObjectX(obj14), ns.GetObjectY(obj14)) +} +func Lord1Missile() { + ns.HitFarLocation(obj12, ns.GetObjectX(obj15), ns.GetObjectY(obj15)) +} +func Lord2Missile() { + ns.HitFarLocation(obj13, ns.GetObjectX(obj15), ns.GetObjectY(obj15)) +} +func OgreDie() { + ivar98 += 1 + if !(ivar98 >= 2) { + goto LABEL1 + } + ns.AggressionLevel(obj15, 0) + ns.AggressionLevel(obj16, 0) + ns.CreatureGuard(obj15, ns.GetObjectX(obj15), ns.GetObjectY(obj15), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj16, ns.GetObjectX(obj16), ns.GetObjectY(obj16), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetDialog(obj7, ns.NEXT, Hecubah3Start, Hecubah3End) + ns.LookAtObject(obj7, ns.GetHost()) + ns.SecondTimer(1, HecubahPoof) +LABEL1: + return +} +func HecKill1() { + ns.CastSpellLocationLocation(ns.SPELL_DEATH_RAY, ns.GetObjectX(obj7), ns.GetObjectY(obj7), ns.GetObjectX(obj18), ns.GetObjectY(obj18)) + ns.SecondTimer(2, HecKill2) +} +func HecKill2() { + ns.CastSpellLocationLocation(ns.SPELL_DEATH_RAY, ns.GetObjectX(obj7), ns.GetObjectY(obj7), ns.GetObjectX(obj17), ns.GetObjectY(obj17)) +} +func EraseHorvath() { + ns.Delete(obj14) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/con07h/dummy_test.go b/examples/con07h/dummy_test.go new file mode 100644 index 0000000..396ec20 --- /dev/null +++ b/examples/con07h/dummy_test.go @@ -0,0 +1,6 @@ +package con07h + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con08a/con08a.go b/examples/con08a/con08a.go new file mode 100644 index 0000000..1265879 --- /dev/null +++ b/examples/con08a/con08a.go @@ -0,0 +1,1643 @@ +package con08a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + gvar30 int + gvar31 int + gvar32 int + gvar33 int + gvar34 int + gvar35 int + gvar36 int + gvar37 int + gvar38 int + gvar39 int + gvar40 int + gvar41 int + ivar42 int + gvar43 int + ivar44 int + ivar45 int + flag46 bool + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + obj83 ns.ObjectID + obj84 ns.ObjectID + obj85 ns.ObjectID + obj86 ns.ObjectID + obj87 ns.ObjectID + obj88 ns.ObjectID + obj89 [8]ns.ObjectID + wp90 ns.WaypointID + wp91 ns.WaypointID + gvar92 int + gvar93 int + gvar94 int + gvar95 int + gvar96 int + gvar97 int + gvar98 int + gvar99 int + gvar100 int + gvar101 int + gvar102 int + gvar103 int + ivar104 int + gvar105 int + ivar106 int + flag107 bool + flag108 bool + flag109 bool + flag110 bool + flag111 bool + flag112 bool + flag113 bool + flag114 bool + flag115 bool + flag116 bool + gvar117 int + obj118 ns.ObjectID + obj119 ns.ObjectID + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + obj123 ns.ObjectID + obj124 ns.ObjectID + obj125 ns.ObjectID + obj126 ns.ObjectID + obj127 ns.ObjectID + obj128 [4]ns.ObjectID + gvar129 int + wp130 ns.WaypointID + wp131 ns.WaypointID + wp132 ns.WaypointID + wp133 ns.WaypointID + gvar134 ns.ObjectGroupID + gvar135 ns.ObjectGroupID + gvar136 ns.WallGroupID + ivar137 int + flag138 bool +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + gvar9 = 5 + gvar10 = 6 + gvar11 = 7 + gvar12 = 8 + gvar13 = 9 + gvar14 = 10 + gvar15 = 11 + gvar16 = 12 + gvar17 = 13 + gvar18 = 14 + gvar19 = 15 + gvar20 = 16 + gvar21 = 17 + gvar22 = 18 + gvar23 = 19 + gvar24 = 20 + gvar25 = 21 + gvar26 = 22 + gvar27 = 23 + gvar28 = 24 + gvar29 = 25 + gvar30 = 26 + gvar31 = gvar14 + gvar32 = gvar11 + gvar33 = gvar8 + gvar34 = gvar15 + gvar35 = gvar19 + gvar36 = gvar23 + gvar37 = gvar24 + gvar38 = gvar25 + gvar39 = gvar26 + gvar40 = gvar27 + gvar41 = gvar4 + ivar42 = 200 + gvar43 = 4 + ivar44 = 0 + ivar45 = 0 + flag46 = false + gvar92 = 0 + gvar93 = 1 + gvar94 = 2 + gvar95 = 3 + gvar96 = 4 + gvar97 = 5 + gvar98 = 6 + gvar99 = 7 + gvar100 = 8 + gvar101 = 9 + gvar102 = 10 + gvar103 = gvar92 + ivar104 = 0 + gvar105 = gvar99 + ivar106 = 0 + flag107 = false + flag108 = false + flag109 = false + flag110 = false + flag111 = false + flag112 = false + flag113 = true + flag114 = true + flag115 = false + flag116 = false + ivar137 = 60 + flag138 = true +} +func JandorStart() { + var v0 int + v0 = gvar41 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + if v0 == gvar7 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War08a:CaptainProd") + goto LABEL5 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War08a:CaptainProd") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:JandorB") + goto LABEL5 +LABEL4: + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(45, ExitToSwamp) + goto LABEL5 +LABEL5: + return +} +func JandorEnd() { + var v0 int + v0 = gvar41 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + if v0 == gvar7 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.JournalEntry(ns.GetHost(), "Chapter8LocateAldwyn", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.AwardSpell(ns.GetHost(), ns.SPELL_SUMMON_CREATURE) + ns.PrintToAll("GeneralPrint:Summon") + ns.JournalEntry(ns.GetHost(), "SummonHint", 8) + gvar41 = gvar5 + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + gvar41 = gvar7 + goto LABEL5 +LABEL4: + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(45, ExitToSwamp) + goto LABEL5 +LABEL5: + return +} +func JacobDialogStart() { + var ( + v0 int + v1 int + v2 int + ) + v2 = gvar40 + if v2 == gvar27 { + goto LABEL1 + } + if v2 == gvar28 { + goto LABEL2 + } + if v2 == gvar29 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Random(1, 3) + v1 = v0 + if v1 == 1 { + goto LABEL5 + } + if v1 == 2 { + goto LABEL6 + } + if v1 == 3 { + goto LABEL7 + } + goto LABEL8 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk01") + goto LABEL8 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk02") + goto LABEL8 +LABEL7: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk03") + goto LABEL8 +LABEL8: + goto LABEL4 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk04") + goto LABEL4 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk05") + goto LABEL4 +LABEL4: + return +} +func JacobDialogEnd() { + var v0 int + v0 = gvar40 + if v0 == gvar28 { + goto LABEL1 + } + if v0 == gvar29 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + flag46 = false + ns.Frozen(ns.GetHost(), false) + goto LABEL3 +LABEL2: + flag46 = false + ns.Frozen(ns.GetHost(), false) + goto LABEL3 +LABEL3: + return +} +func ResetJacobDialog() { + if !ns.IsCaller(obj75) { + goto LABEL1 + } + if gvar40 != gvar30 { + goto LABEL1 + } + flag46 = false + gvar40 = gvar27 + ns.SetDialog(obj75, ns.NORMAL, JacobDialogStart, JacobDialogEnd) + ivar45 = 0 + ns.ObjectOff(obj78) +LABEL1: + return +} +func ContestGuardStart() { + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownsman2") +} +func ContestGuardEnd() { + ns.SetDialog(obj77, ns.NORMAL, ContestGuardStart, ContestGuardEnd) +} +func MorganInjured() { + var v0 int + if flag46 { + goto LABEL1 + } + flag46 = true + ivar45 += 1 + v0 = ivar45 + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL1 +LABEL2: + gvar40 = gvar28 + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj75) + ns.LookAtObject(obj75, ns.GetHost()) + ns.StartDialog(obj75, ns.GetHost()) + goto LABEL1 +LABEL3: + gvar40 = gvar29 + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj75) + ns.LookAtObject(obj75, ns.GetHost()) + ns.StartDialog(obj75, ns.GetHost()) + goto LABEL1 +LABEL4: + gvar40 = gvar30 + ns.CancelDialog(obj75) + ns.ClearOwner(obj75) + ns.AggressionLevel(obj75, 0.83) + ns.Attack(obj75, ns.GetHost()) + goto LABEL1 +LABEL1: + return +} +func PlayerFlee() { + if gvar40 != gvar30 { + goto LABEL1 + } + ns.ObjectOn(obj78) + ns.SetOwner(ns.GetHost(), obj75) + ns.AggressionLevel(obj75, 0) + ns.CreatureGuard(obj75, ns.GetWaypointX(wp79), ns.GetWaypointY(wp79), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func HenrickDialogStart() { + var v0 int + v0 = gvar32 + if v0 == gvar11 { + goto LABEL1 + } + if v0 == gvar12 { + goto LABEL2 + } + if v0 == gvar13 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj48, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSalesPitchA") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj48, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSalesPitchB") + goto LABEL4 +LABEL3: + ns.LookAtObject(obj48, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNoMoreWolves") + goto LABEL4 +LABEL4: + return +} +func HenrickDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + v6 int + v7 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v7 = gvar32 + if v7 == gvar11 { + goto LABEL1 + } + if v7 == gvar12 { + goto LABEL2 + } + if v7 == gvar13 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v1 = ns.GetAnswer(obj48) + v5 = v1 + if v5 == v2 { + goto LABEL5 + } + if v5 == v3 { + goto LABEL6 + } + if v5 == v4 { + goto LABEL7 + } + goto LABEL8 +LABEL5: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar42) { + goto LABEL9 + } + ns.SetDialog(obj48, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNotEnoughGold") + goto LABEL10 +LABEL9: + ns.ChangeGold(ns.GetHost(), -ivar42) + gvar32 = gvar12 + ReleaseCharmedWolf(ivar44) + ivar44 += 1 + ns.SetDialog(obj48, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSaleSuccessful") +LABEL10: + goto LABEL8 +LABEL6: + goto LABEL8 +LABEL7: + goto LABEL8 +LABEL8: + goto LABEL4 +LABEL2: + v1 = ns.GetAnswer(obj48) + v6 = v1 + if v6 == v2 { + goto LABEL11 + } + if v6 == v3 { + goto LABEL12 + } + if v6 == v4 { + goto LABEL13 + } + goto LABEL14 +LABEL11: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar42) { + goto LABEL15 + } + ns.SetDialog(obj48, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNotEnoughGold") + goto LABEL16 +LABEL15: + ns.ChangeGold(ns.GetHost(), -ivar42) + ReleaseCharmedWolf(ivar44) + ivar44 += 1 + ns.SetDialog(obj48, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSaleSuccessful") + if !(ivar44 >= 4) { + goto LABEL16 + } + gvar32 = gvar13 + ns.SetDialog(obj48, ns.NORMAL, HenrickDialogStart, HenrickDialogEnd) +LABEL16: + goto LABEL14 +LABEL12: + goto LABEL14 +LABEL13: + goto LABEL14 +LABEL14: + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func DrunkDialogStart() { + ns.LookAtObject(obj49, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:DrunkGreeting") +} +func DrunkDialogEnd() { +} +func GatekeeperDialogStart() { + var v0 int + ns.LookAtObject(obj52, ns.GetHost()) + v0 = gvar36 + if v0 == gvar23 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con02a:GatekeeperWaiting") + goto LABEL2 +LABEL2: + return +} +func GatekeeperDialogEnd() { +} +func Gatekeeper2DialogStart() { + var v0 int + ns.LookAtObject(obj63, ns.GetHost()) + v0 = gvar37 + if v0 == gvar24 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con08a:GuardGreet") + goto LABEL2 +LABEL2: + return +} +func Gatekeeper2DialogEnd() { +} +func Gatekeeper3DialogStart() { + var v0 int + ns.LookAtObject(obj64, ns.GetHost()) + v0 = gvar38 + if v0 == gvar25 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War08a:Guard02Greet") + goto LABEL2 +LABEL2: + return +} +func Gatekeeper3DialogEnd() { +} +func MayorDialogStart() { + var ( + v0 int + v1 int + ) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj55) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorPre") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorBye") + goto LABEL3 +LABEL3: + return +} +func MayorDialogEnd() { + ns.Frozen(ns.GetHost(), false) +} +func MayorsGuardDialogStart() { + var v0 int + v0 = gvar31 + if v0 == gvar14 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.LookAtObject(obj53, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorsGuardPre") + goto LABEL2 +LABEL2: + return +} +func MayorsGuardDialogEnd() { +} +func AldwinDialogStart() { + var v0 int + v0 = gvar33 + if v0 == gvar8 { + goto LABEL1 + } + if v0 == gvar9 { + goto LABEL2 + } + if v0 == gvar10 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj54, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con08a:AldwynGreet") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj54, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con08:AldwynProd2") + goto LABEL4 +LABEL3: + ns.LookAtObject(obj54, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con08:AldwynProd") + goto LABEL4 +LABEL4: + return +} +func AldwinDialogEnd() { + var v0 int + v0 = gvar33 + if v0 == gvar8 { + goto LABEL1 + } + if v0 == gvar9 { + goto LABEL2 + } + if v0 == gvar10 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.Pickup(ns.GetHost(), obj50) + ns.PrintToAll("GeneralPrint:GainedKey") + gvar33 = gvar9 + ns.JournalEdit(ns.GetHost(), "Chapter8LocateAldwyn", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8IxPriest", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + goto LABEL4 +LABEL2: + gvar33 = gvar10 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func BridgeGuardDialogStart() { + var v0 int + v0 = gvar39 + if v0 == gvar26 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.LookAtObject(obj65, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:RandomSay") + goto LABEL2 +LABEL2: + return +} +func BridgeGuardDialogEnd() { + var v0 int + v0 = gvar39 + if v0 == gvar26 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + goto LABEL2 +LABEL2: + return +} +func Maiden1DialogStart() { + ns.LookAtObject(obj67, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:BarMaiden") +} +func Maiden1DialogEnd() { +} +func Maiden2DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj68, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj68) + ns.LookAtObject(ns.GetHost(), obj68) + ns.LookAtObject(obj68, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:MaidenTalk01") +} +func Maiden2DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj68, false) + ns.Wander(obj68) +} +func Maiden3DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj69, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj69) + ns.LookAtObject(ns.GetHost(), obj69) + ns.LookAtObject(obj69, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaidenTalk05") +} +func Maiden3DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj69, false) + ns.Wander(obj69) +} +func Maiden4DialogStart() { + var ( + v0 int + v1 int + ) + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj70, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj70) + ns.LookAtObject(ns.GetHost(), obj70) + ns.LookAtObject(obj70, ns.GetHost()) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownswoman1") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownswoman3") + goto LABEL3 +LABEL3: + return +} +func Maiden4DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj70, false) + ns.Wander(obj70) +} +func Townsman1DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj72, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj72) + ns.LookAtObject(ns.GetHost(), obj72) + ns.LookAtObject(obj72, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownsman3") +} +func Townsman1DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj72, false) + ns.Wander(obj72) +} +func Townsman2DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj73, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj73) + ns.LookAtObject(ns.GetHost(), obj73) + ns.LookAtObject(obj73, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:AlbiTalk01") +} +func Townsman2DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj73, false) + ns.Wander(obj73) +} +func Townsman3DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj74, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj74) + ns.LookAtObject(ns.GetHost(), obj74) + ns.LookAtObject(obj74, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxRumor03") +} +func Townsman3DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj74, false) + ns.Wander(obj74) +} +func ReleaseCharmedWolf(a1 int) { + var v0 int + v0 = a1 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.WallOpen(ns.Wall(59, 113)) + ns.EnchantOff(obj128[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj128[a1], ns.GetHost()) + ns.PauseObject(obj128[a1], 30) + ns.AggressionLevel(obj128[a1], 0.83) + ns.MakeFriendly(obj128[a1]) + ns.BecomePet(obj128[a1]) + goto LABEL5 +LABEL2: + ns.WallOpen(ns.Wall(57, 111)) + ns.EnchantOff(obj128[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj128[a1], ns.GetHost()) + ns.PauseObject(obj128[a1], 30) + ns.AggressionLevel(obj128[a1], 0.83) + ns.MakeFriendly(obj128[a1]) + ns.BecomePet(obj128[a1]) + goto LABEL5 +LABEL3: + ns.WallOpen(ns.Wall(55, 109)) + ns.EnchantOff(obj128[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj128[a1], ns.GetHost()) + ns.PauseObject(obj128[a1], 30) + ns.AggressionLevel(obj128[a1], 0.83) + ns.MakeFriendly(obj128[a1]) + ns.BecomePet(obj128[a1]) + goto LABEL5 +LABEL4: + ns.WallOpen(ns.Wall(53, 107)) + ns.EnchantOff(obj128[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj128[a1], ns.GetHost()) + ns.PauseObject(obj128[a1], 30) + ns.AggressionLevel(obj128[a1], 0.83) + ns.MakeFriendly(obj128[a1]) + ns.BecomePet(obj128[a1]) + goto LABEL5 +LABEL5: + return +} +func InitializeDialogs() { + ns.StoryPic(obj48, "Townsman2Pic") + ns.StoryPic(obj49, "DrunkPic") + ns.StoryPic(obj51, "Townsman1Pic") + ns.StoryPic(obj52, "IxGuard2Pic") + ns.StoryPic(obj53, "Warrior3Pic") + ns.StoryPic(obj55, "TheogrinPic") + ns.StoryPic(obj54, "AldwynPic") + ns.StoryPic(obj63, "IxGuard2Pic") + ns.StoryPic(obj64, "IxGuard1Pic") + ns.StoryPic(obj67, "MaidenPic") + ns.StoryPic(obj68, "MaidenPic2") + ns.StoryPic(obj69, "MaidenPic3") + ns.StoryPic(obj70, "MaidenPic4") + ns.StoryPic(obj72, "MalePic4") + ns.StoryPic(obj73, "MalePic11") + ns.StoryPic(obj74, "MalePic12") + ns.StoryPic(obj47, "AirshipCaptainPic") + ns.StoryPic(obj75, "WardenPic") + ns.SetDialog(obj75, ns.NORMAL, JacobDialogStart, JacobDialogEnd) + ns.SetDialog(obj49, ns.NORMAL, DrunkDialogStart, DrunkDialogEnd) + ns.SetDialog(obj63, ns.NORMAL, Gatekeeper2DialogStart, Gatekeeper2DialogEnd) + ns.SetDialog(obj64, ns.NORMAL, Gatekeeper3DialogStart, Gatekeeper3DialogEnd) + ns.SetDialog(obj53, ns.NORMAL, MayorsGuardDialogStart, MayorsGuardDialogEnd) + ns.SetDialog(obj54, ns.NORMAL, AldwinDialogStart, AldwinDialogEnd) + ns.SetDialog(obj67, ns.NORMAL, Maiden1DialogStart, Maiden1DialogEnd) + ns.SetDialog(obj68, ns.NORMAL, Maiden2DialogStart, Maiden2DialogEnd) + ns.SetDialog(obj69, ns.NORMAL, Maiden3DialogStart, Maiden3DialogEnd) + ns.SetDialog(obj70, ns.NORMAL, Maiden4DialogStart, Maiden4DialogEnd) + ns.SetDialog(obj72, ns.NORMAL, Townsman1DialogStart, Townsman1DialogEnd) + ns.SetDialog(obj73, ns.NORMAL, Townsman2DialogStart, Townsman2DialogEnd) + ns.SetDialog(obj74, ns.NORMAL, Townsman3DialogStart, Townsman3DialogEnd) +} +func InitializeSecondaryDialogs() { + gvar41 = gvar6 +} +func NullDialogStart() { +} +func ExitToSwamp() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(ns.Waypoint("SwampExitWP")), ns.GetWaypointY(ns.Waypoint("SwampExitWP"))) +} +func StartCaptainConversation() { + ns.SetDialog(obj47, ns.NORMAL, JandorStart, JandorEnd) + ns.StartDialog(obj47, ns.GetHost()) +} +func ResetHenrickDialogChoice() { + ns.SetDialog(obj48, ns.YESNO, HenrickDialogStart, HenrickDialogEnd) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func GoToMineSEG2() { + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp81), ns.GetWaypointY(wp81)) +} +func GoToMine() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Blind() + ns.FrameTimer(60, GoToMineSEG2) +LABEL1: + return +} +func GoToCaveSEG2() { + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp82), ns.GetWaypointY(wp82)) +} +func GoToCave() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Blind() + ns.FrameTimer(60, GoToCaveSEG2) +LABEL1: + return +} +func InversionInit() { + obj83 = ns.Object("Teacher") + obj84 = ns.Object("Apprentice") + obj85 = ns.Object("InvertSpell") + obj86 = ns.Object("LessonGate1") + obj87 = ns.Object("LessonGate2") + obj88 = ns.Object("ApprenticeTrigger") + wp90 = ns.Waypoint("PlayerSounds") + wp91 = ns.Waypoint("ApprenticeWP") + ns.StoryPic(obj83, "WizardGuard1Pic") + ns.SetDialog(obj83, ns.YESNO, TeacherStart, TeacherEnd) + ns.LockDoor(obj86) + ns.LockDoor(obj87) + ns.ObjectOff(obj88) + ns.FrameTimer(1, InversionOwnObject) +} +func InversionOwnObject() { + ns.SetOwner(ns.GetHost(), obj83) + ns.SetOwner(ns.GetHost(), obj84) + ns.Enchant(obj84, ns.ENCHANT_INVULNERABLE, 0) + ns.Enchant(obj83, ns.ENCHANT_ANCHORED, 0) + ns.Enchant(obj84, ns.ENCHANT_ANCHORED, 0) +} +func TeacherStart() { + var v0 int + v0 = gvar103 + if v0 == gvar92 { + goto LABEL1 + } + if v0 == gvar93 { + goto LABEL2 + } + if v0 == gvar94 { + goto LABEL3 + } + if v0 == gvar95 { + goto LABEL4 + } + if v0 == gvar96 { + goto LABEL5 + } + if v0 == gvar97 { + goto LABEL6 + } + if v0 == gvar98 { + goto LABEL7 + } + goto LABEL8 +LABEL1: + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj83) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk01") + goto LABEL8 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk04") + goto LABEL8 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk02") + goto LABEL8 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk03") + goto LABEL8 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk05") + goto LABEL8 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk04a") + goto LABEL8 +LABEL7: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk06") + goto LABEL8 +LABEL8: + return +} +func TeacherEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + v6 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v6 = gvar103 + if v6 == gvar92 { + goto LABEL1 + } + if v6 == gvar93 { + goto LABEL2 + } + if v6 == gvar94 { + goto LABEL3 + } + if v6 == gvar95 { + goto LABEL4 + } + if v6 == gvar96 { + goto LABEL5 + } + if v6 == gvar97 { + goto LABEL6 + } + if v6 == gvar98 { + goto LABEL7 + } + goto LABEL8 +LABEL1: + v1 = ns.GetAnswer(obj83) + v5 = v1 + if v5 == v2 { + goto LABEL9 + } + if v5 == v3 { + goto LABEL10 + } + if v5 == v4 { + goto LABEL11 + } + goto LABEL12 +LABEL9: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < 100) { + goto LABEL13 + } + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + gvar103 = gvar93 + ns.StartDialog(obj83, ns.GetHost()) + goto LABEL12 + goto LABEL10 +LABEL13: + ns.ChangeGold(ns.GetHost(), -100) + ns.UnlockDoor(obj86) + ns.UnlockDoor(obj87) + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + gvar103 = gvar94 + ns.StartDialog(obj83, ns.GetHost()) + goto LABEL12 +LABEL10: + ns.Frozen(ns.GetHost(), false) + gvar103 = gvar92 + ns.SetDialog(obj83, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL12 +LABEL11: + ns.Frozen(ns.GetHost(), false) + gvar103 = gvar92 + ns.SetDialog(obj83, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL12 +LABEL12: + goto LABEL8 +LABEL2: + ns.Frozen(ns.GetHost(), false) + gvar103 = gvar92 + ns.SetDialog(obj83, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL3: + ns.CancelDialog(obj83) + ns.Frozen(ns.GetHost(), false) + ns.Pickup(ns.GetHost(), obj85) + goto LABEL8 +LABEL4: + ns.CancelDialog(obj83) + ns.SecondTimer(1, Phoneme4) + goto LABEL8 +LABEL5: + ns.UnlockDoor(obj58) + ns.UnlockDoor(obj59) + ns.UnlockDoor(obj86) + ns.UnlockDoor(obj87) + gvar103 = gvar98 + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL6: + ns.UnlockDoor(obj58) + ns.UnlockDoor(obj59) + ns.UnlockDoor(obj86) + ns.UnlockDoor(obj87) + gvar103 = gvar98 + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL7: + gvar103 = gvar98 + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL8: + return +} +func Phoneme1() { + if flag111 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj84) > 0) { + goto LABEL1 + } + ns.MoveWaypoint(wp90, 1326, 2493) + ns.AudioEvent(ns.SpellPhonemeDown, wp90) + ns.FrameTimer(10, Phoneme2) +LABEL1: + return +} +func Phoneme2() { + if flag111 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj84) > 0) { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeDown, wp90) + ns.FrameTimer(10, Phoneme3) +LABEL1: + return +} +func Phoneme3() { + if flag111 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj84) > 0) { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeDown, wp90) + ns.FrameTimer(10, CastSpells) +LABEL1: + return +} +func Phoneme4() { + if !flag111 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj84) > 0) { + goto LABEL1 + } + ns.MoveWaypoint(wp90, 1326, 2493) + ns.AudioEvent(ns.SpellPhonemeDown, wp90) + ns.FrameTimer(10, Phoneme5) +LABEL1: + return +} +func Phoneme5() { + if !flag111 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj84) > 0) { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeDown, wp90) + ns.FrameTimer(10, Phoneme6) +LABEL1: + return +} +func Phoneme6() { + if !flag111 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj84) > 0) { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeDown, wp90) + ns.FrameTimer(10, CastSpells2) +LABEL1: + return +} +func LessonBegin() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if gvar103 != gvar94 { + goto LABEL1 + } + if !flag113 { + goto LABEL2 + } + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LockDoor(obj86) + ns.LockDoor(obj87) + ns.Move(obj84, wp91) + flag113 = false +LABEL2: + if !(flag107 == false && flag112 == true) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.LookAtObject(obj84, ns.GetHost()) + flag107 = true + ns.LockDoor(obj58) + ns.LockDoor(obj59) + ns.SecondTimer(1, Phoneme1) +LABEL1: + return +} +func CastSpells() { + if flag111 { + goto LABEL1 + } + gvar105 = gvar102 + if !(ivar104 < 4) { + goto LABEL2 + } + ns.ClearOwner(obj84) + ns.CastSpellObjectLocation(ns.SPELL_SLOW, obj84, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.Enchant(obj84, ns.ENCHANT_INVULNERABLE, 0) +LABEL2: + if ivar104 != 4 { + goto LABEL3 + } + ns.EnchantOff(obj84, ns.ENCHANT_INVULNERABLE) + ns.CastSpellObjectLocation(ns.SPELL_MAGIC_MISSILE, obj84, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL3: + ivar104 += 1 + if !(ivar104 < 5) { + goto LABEL4 + } + ns.SecondTimer(3, Phoneme1) + goto LABEL1 +LABEL4: + flag108 = true + if !flag110 { + goto LABEL5 + } + gvar103 = gvar96 + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj83, ns.GetHost()) + goto LABEL1 +LABEL5: + gvar103 = gvar97 + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj83, ns.GetHost()) +LABEL1: + return +} +func CastSpells2() { + if !flag111 { + goto LABEL1 + } + gvar105 = gvar102 + if !(ivar104 < 4) { + goto LABEL2 + } + ns.CastSpellObjectLocation(ns.SPELL_SLOW, obj84, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.Enchant(obj84, ns.ENCHANT_INVULNERABLE, 0) +LABEL2: + if ivar104 != 4 { + goto LABEL3 + } + ns.EnchantOff(obj84, ns.ENCHANT_INVULNERABLE) + ns.CastSpellObjectLocation(ns.SPELL_MAGIC_MISSILE, obj84, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL3: + ivar104 += 1 + if !(ivar104 < 5) { + goto LABEL4 + } + ns.SecondTimer(3, Phoneme4) + goto LABEL1 +LABEL4: + flag108 = true + if !flag110 { + goto LABEL5 + } + gvar103 = gvar96 + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj83, ns.GetHost()) + goto LABEL1 +LABEL5: + gvar103 = gvar97 + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj83, ns.GetHost()) +LABEL1: + return +} +func CheckApprentice() { + if !ns.HasEnchant(obj84, ns.ENCHANT_SLOWED) { + goto LABEL1 + } + ns.ObjectOff(obj88) + flag111 = true + gvar103 = gvar95 + flag110 = true + if !(ivar104 > 2) { + goto LABEL2 + } + ivar104 = 2 +LABEL2: + ns.SetDialog(obj83, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj83, ns.GetHost()) +LABEL1: + if !(ns.CurrentHealth(obj84) <= 0) { + goto LABEL3 + } + ns.ObjectOff(ns.GetTrigger()) + flag110 = true +LABEL3: + return +} +func ApprenticeDie() { + ns.AudioEvent(ns.HumanMaleHurtHeavy, wp90) +} +func ApprenticeReport() { + ns.CreatureGuard(obj84, ns.GetWaypointX(wp91), ns.GetWaypointY(wp91), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.ObjectOn(obj88) + flag112 = true +} +func StopCreatures() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag114 = false + v0 = 0 + for { + if !(v0 <= ivar106) { + goto LABEL1 + } + ns.AggressionLevel(obj89[v0], 0) + ns.CreatureIdle(obj89[v0]) + ns.ObjectOff(obj89[v0]) + v0 += 1 + } +LABEL1: + r3 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if r3 { + goto LABEL3 + } + if !ns.HasClass(ns.GetCaller(), "CLASS_MONSTER") { + goto LABEL3 + } + obj89[ivar106] = ns.GetCaller() + ns.AggressionLevel(ns.GetCaller(), 0) + ns.CreatureIdle(ns.GetCaller()) + ns.ObjectOff(ns.GetCaller()) + ivar106 += 1 +LABEL3: + return +} +func StartCreatures() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + v0 = 0 + for { + if !(v0 <= ivar106) { + goto LABEL1 + } + ns.ObjectOn(obj89[v0]) + ns.CreatureFollow(obj89[v0], ns.GetHost()) + ns.AggressionLevel(obj89[v0], 0.5) + flag114 = true + v0 += 1 + } +LABEL1: + return +} +func OwnObjects() { + ns.GroupSetOwner(ns.GetHost(), gvar134) + ns.SetOwner(ns.GetHost(), obj48) + ns.GroupSetOwner(ns.GetHost(), gvar135) + ns.SetOwner(ns.GetHost(), obj49) + ns.SetOwner(ns.GetHost(), obj67) + ns.SetOwner(ns.GetHost(), obj68) + ns.SetOwner(ns.GetHost(), obj69) + ns.SetOwner(ns.GetHost(), obj70) + ns.SetOwner(ns.GetHost(), obj47) + ns.SetOwner(ns.GetHost(), obj75) + ns.SetOwner(ns.GetHost(), obj77) +} +func AwardSummonSpell() { + ns.AwardSpell(ns.GetHost(), ns.SPELL_SUMMON_CREATURE) + ns.PrintToAll("GeneralPrint:Summon") + ns.JournalEntry(ns.GetHost(), "SummonHint", 8) +} +func DisableElevators() { + ns.ObjectOff(obj60) + ns.ObjectOff(obj66) +} +func MapInitialize() { + obj49 = ns.Object("Drunk") + obj54 = ns.Object("Aldwyn") + obj52 = ns.Object("Geoff") + obj63 = ns.Object("Ryan") + obj64 = ns.Object("Ed") + obj55 = ns.Object("Mayor_Theogrin") + obj53 = ns.Object("Mayor's_Guard") + obj51 = ns.Object("Barkeeper") + obj65 = ns.Object("Bridge_Guard") + obj48 = ns.Object("Henrick") + obj47 = ns.Object("Jandor") + obj75 = ns.Object("Jacob") + obj76 = ns.Object("Morgan") + obj78 = ns.Object("JacobTrigger") + obj126 = ns.Object("MorganDoor") + obj127 = ns.Object("CaveDoor") + wp79 = ns.Waypoint("JacobWP") + wp133 = ns.Waypoint("FaceWP") + obj77 = ns.Object("Contest_Guard") + obj56 = ns.Object("MayorGate1") + obj57 = ns.Object("MayorGate2") + obj58 = ns.Object("ContestGate1") + obj59 = ns.Object("ContestGate2") + obj120 = ns.Object("CemDoorL") + obj121 = ns.Object("CemDoorR") + obj118 = ns.Object("BasementDoor") + obj60 = ns.Object("AldwinElevator") + obj61 = ns.Object("RightTownGate") + obj62 = ns.Object("LeftTownGate") + obj72 = ns.Object("Bryan") + obj73 = ns.Object("Clyde") + obj74 = ns.Object("Tommy") + obj66 = ns.Object("MagicShopElevator") + obj67 = ns.Object("Joyce") + obj68 = ns.Object("Julie") + obj69 = ns.Object("Tanya") + obj70 = ns.Object("Gretchen") + obj50 = ns.Object("BlueKey") + obj71 = ns.Object("AldwynFireplace") + obj119 = ns.Object("AldwynsDoor") + obj122 = ns.Object("TempDoorL") + obj123 = ns.Object("TempDoorR") + obj124 = ns.Object("Mystic") + obj125 = ns.Object("Mystic2") + wp80 = ns.Waypoint("AldwynHome") + wp130 = ns.Waypoint("AldwynStorage") + wp131 = ns.Waypoint("MysticWP") + wp132 = ns.Waypoint("MysticStorage") + gvar134 = ns.ObjectGroup("NPC's") + gvar135 = ns.ObjectGroup("CharmedWolves") + gvar136 = ns.WallGroup("MagicShopElevatorWalls") + wp81 = ns.Waypoint("MineExitWP") + wp82 = ns.Waypoint("CaveExitWP") + ns.Wander(obj72) + ns.Wander(obj73) + ns.Wander(obj74) + ns.Wander(obj68) + ns.Wander(obj69) + ns.LockDoor(obj56) + ns.LockDoor(obj57) + ns.LockDoor(obj120) + ns.LockDoor(obj121) + ns.LockDoor(obj61) + ns.LockDoor(obj62) + ns.LockDoor(obj126) + ns.LockDoor(obj127) + ns.LockDoor(obj58) + ns.LockDoor(obj59) + obj128[0] = 0 + obj128[1] = 0 + obj128[2] = 0 + obj128[3] = 0 + InversionInit() + InitializeDialogs() + ns.StartupScreen(8) + ns.FrameTimer(1, OwnObjects) + ns.FrameTimer(5, StartCaptainConversation) + ns.FrameTimer(35, DisableElevators) +} +func MapEntry() { + var v0 int + v0 = ns.GetQuestStatus("Chapter8:HasWeirdling") + ns.Music(15, 100) + if v0 != 1 { + goto LABEL1 + } + flag116 = true + ns.MoveObject(obj54, ns.GetWaypointX(wp130), ns.GetWaypointY(wp130)) + ns.LockDoor(obj119) + ns.LockDoor(obj122) + ns.LockDoor(obj123) + InitializeSecondaryDialogs() + ns.SetShopkeeperText(obj124, "Con08a:Mystic2") + ns.CancelDialog(obj63) + ns.CancelDialog(obj64) +LABEL1: + if !(ns.CurrentHealth(obj84) > 0) { + goto LABEL2 + } + ns.Enchant(obj84, ns.ENCHANT_INVULNERABLE, 0) +LABEL2: + ns.SetDialog(obj77, ns.NORMAL, ContestGuardStart, ContestGuardEnd) + ns.StoryPic(obj77, "Townsman2Pic") + ns.UnBlind() +} +func DebugOn() { + flag115 = true + ns.PrintToAll("Debug mode is enabled.") +} +func DebugOff() { + flag115 = false + ns.PrintToAll("Debug mode has been disabled.") +} +func GetWeirdlingValue() { + var v0 int + v0 = ns.GetQuestStatus("Con08a:HasWierdling") + if v0 != 1 { + goto LABEL1 + } + ns.PrintToAll("The weirdleing has been retrieved!") + goto LABEL2 +LABEL1: + ns.PrintToAll("The weirdling value = 0!") +LABEL2: + return +} +func OpenCaveDoor() { + ns.UnlockDoor(obj127) + ns.ObjectOff(ns.GetTrigger()) +} +func EnableRandomBump() { + flag138 = true +} +func RandomBump() { + if !(ns.IsCaller(ns.GetHost()) && flag138) { + goto LABEL1 + } + ns.Chat(ns.GetTrigger(), "Con02a:RandomBump") + flag138 = false + ns.FrameTimer(ivar137, EnableRandomBump) +LABEL1: + return +} +func RestAwhile() { + var v0 int + v0 = ns.Random(60, 120) + ns.PauseObject(ns.GetCaller(), v0) +} +func OpenMagicShopElevatorWalls() { + ns.WallGroupOpen(gvar136) +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, ns.Waypoint("WellWP")) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con08a/dummy_test.go b/examples/con08a/dummy_test.go new file mode 100644 index 0000000..907e688 --- /dev/null +++ b/examples/con08a/dummy_test.go @@ -0,0 +1,6 @@ +package con08a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con08b/con08b.go b/examples/con08b/con08b.go new file mode 100644 index 0000000..f1047bc --- /dev/null +++ b/examples/con08b/con08b.go @@ -0,0 +1,263 @@ +package con08b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + wp8 ns.WaypointID + wp9 ns.WaypointID + gvar10 ns.ObjectGroupID + wp11 ns.WaypointID + wp12 ns.WaypointID + wp13 ns.WaypointID + wp14 ns.WaypointID + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + flag20 bool + flag21 bool +) + +func init() { + gvar15 = 0 + gvar16 = 1 + gvar17 = 2 + gvar18 = 3 + gvar19 = gvar15 + flag20 = false + flag21 = false +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func GoToIxSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj4, false) + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp8), ns.GetWaypointY(wp8)) +} +func GoToIx() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Blind() + ns.FrameTimer(60, GoToIxSEG2) +LABEL1: + return +} +func GoToTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp9), ns.GetWaypointY(wp9)) +} +func GoToTemple() { + ns.Frozen(ns.GetHost(), true) + ns.CancelDialog(obj7) + ns.Blind() + ns.FrameTimer(60, GoToTempleSEG2) +} +func OwnObjects() { + ns.SetOwner(ns.GetHost(), obj7) +} +func MapInitialize() { + obj4 = ns.Object("Bear01") + obj5 = ns.Object("Bear02") + obj6 = ns.Object("Bear03") + obj7 = ns.Object("IxPriest") + gvar10 = ns.ObjectGroup("Fish") + wp8 = ns.Waypoint("IxExitWP") + wp11 = ns.Waypoint("TempleExtWP") + wp12 = ns.Waypoint("TempleIntWP") + wp9 = ns.Waypoint("TempleExitWP") + wp13 = ns.Waypoint("PriestWP") + wp14 = ns.Waypoint("PriestLookWP") + ns.GroupWander(gvar10) + ns.FrameTimer(1, OwnObjects) +} +func MapEntry() { + ns.UnBlind() + ns.Music(22, 100) +} +func EnterTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj4, false) + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp12), ns.GetWaypointY(wp12)) + ns.UnBlind() +} +func EnterTemple() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Blind() + ns.FrameTimer(60, EnterTempleSEG2) +} +func LeaveTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.UnBlind() +} +func LeaveTemple() { + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(60, LeaveTempleSEG2) +} +func StayAway() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func NoMonsters() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func BearAttack() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.CreatureFollow(obj5, obj4) + ns.CreatureFollow(obj6, obj4) +LABEL1: + return +} +func BearIdle() { + ns.GoBackHome(ns.GetTrigger()) +} +func PriestSetPieceSEG2() { + ns.CreatureFollow(obj7, ns.GetHost()) + ns.FrameTimer(75, PriestSetPieceSEG3) +} +func PriestSetPieceSEG3() { + ns.StoryPic(obj7, "IxPriestPic") + ns.SetDialog(obj7, ns.NEXT, PriestDialogStart, PriestDialogEnd) + ns.StartDialog(obj7, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj7) +} +func PriestDialogStart() { + var v0 int + v0 = gvar19 + if v0 == gvar15 { + goto LABEL1 + } + if v0 == gvar16 { + goto LABEL2 + } + if v0 == gvar17 { + goto LABEL3 + } + if v0 == gvar18 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestGreet") + goto LABEL5 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd2") + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd3") + goto LABEL5 +LABEL5: + return +} +func PriestDialogEnd() { + var v0 int + v0 = gvar19 + if v0 == gvar15 { + goto LABEL1 + } + if v0 == gvar16 { + goto LABEL2 + } + if v0 == gvar17 { + goto LABEL3 + } + if v0 == gvar18 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar19 = gvar16 + PriestDialogStart() + goto LABEL5 +LABEL2: + gvar19 = gvar17 + PriestDialogStart() + goto LABEL5 +LABEL3: + gvar19 = gvar18 + ns.SetDialog(obj7, ns.NORMAL, PriestDialogStart, PriestDialogEnd) + PriestDialogStart() + goto LABEL5 +LABEL4: + if flag21 { + goto LABEL6 + } + flag21 = true + ns.JournalEdit(ns.GetHost(), "Chapter8IxPriest", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8Wierdling", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.WideScreen(false) + ReleasePlayer() +LABEL6: + ns.CreatureGuard(obj7, ns.GetWaypointX(wp13), ns.GetWaypointY(wp13), ns.GetWaypointX(wp14), ns.GetWaypointY(wp14), 0) + goto LABEL5 +LABEL5: + return +} +func ReleasePlayer() { + ns.MusicPopEvent() + ns.Frozen(ns.GetHost(), false) +} +func StartPriestSetPiece() { + if flag20 { + goto LABEL1 + } + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MusicPushEvent() + ns.Music(10, 100) + flag20 = true + ns.AudioEvent(ns.BigGong, wp12) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, PriestSetPieceSEG2) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con08b/dummy_test.go b/examples/con08b/dummy_test.go new file mode 100644 index 0000000..8b9fb36 --- /dev/null +++ b/examples/con08b/dummy_test.go @@ -0,0 +1,6 @@ +package con08b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con08c/con08c.go b/examples/con08c/con08c.go new file mode 100644 index 0000000..8aa6a1d --- /dev/null +++ b/examples/con08c/con08c.go @@ -0,0 +1,838 @@ +package con08c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.ObjectGroupID + gvar5 ns.ObjectGroupID + gvar6 ns.ObjectGroupID + wp7 ns.WaypointID + obj8 ns.ObjectID + obj9 ns.ObjectID + wp10 ns.WaypointID + wp11 ns.WaypointID + gvar12 ns.WallGroupID + gvar13 ns.WallGroupID + wp14 ns.WaypointID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + wp23 ns.WaypointID + wp24 ns.WaypointID + wp25 ns.WaypointID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + gvar32 int + gvar33 [10]ns.ObjectGroupID + gvar34 int + obj35 ns.ObjectID + obj36 [9]ns.ObjectID + gvar37 int + ivar38 int + ivar39 int + ivar40 int + ivar41 int + ivar42 int + ivar43 [10]int + flag44 [10]bool + wp45 [10]ns.WaypointID + str46 [6]string +) + +func init() { + gvar37 = 0 + ivar38 = 1 + ivar39 = 0 + ivar40 = 180 + ivar41 = 0 + ivar42 = 10 +} +func ArrowTrapAudio() { + ns.MoveWaypoint(wp7, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BowShoot, wp7) + ns.AudioEvent(ns.CrossBowShoot, wp7) +} +func DisableArrowTrapGroup01() { + ns.ObjectGroupOff(gvar4) +} +func EnableArrowTrapGroup01() { + ns.ObjectGroupOn(gvar4) + ns.FrameTimer(1, DisableArrowTrapGroup01) +} +func DisableArrowTrapGroup02() { + ns.ObjectGroupOff(gvar5) +} +func ActivateArrowTrap02() { + ns.ObjectGroupOn(gvar5) + ns.FrameTimer(1, DisableArrowTrapGroup02) +} +func DisableArrowTrapGroup03() { + ns.ObjectGroupOff(gvar6) +} +func ActivateArrowTrap03() { + ns.ObjectGroupOn(gvar6) + ns.FrameTimer(1, DisableArrowTrapGroup03) +} +func BeholderAttackExit() { + if !(ns.CurrentHealth(obj8) > 0) { + goto LABEL1 + } + if ns.IsVisibleTo(obj8, ns.GetHost()) { + goto LABEL1 + } + ns.Move(obj8, wp11) +LABEL1: + return +} +func BeholderStay() { + if !ns.IsCaller(obj8) { + goto LABEL1 + } + ns.Wander(obj8) +LABEL1: + if !ns.IsCaller(obj9) { + goto LABEL2 + } + ns.Wander(obj9) +LABEL2: + return +} +func OpenBoulderHallWall01() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(104, 162)) +} +func OpenBoulderHallWall02() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(213, 107)) +} +func GoldKeyRemoved() { + ns.WallGroupOpen(gvar12) + ns.WallGroupOpen(gvar13) +} +func ReleaseGoldKeyBombers() { + ns.WallGroupOpen(gvar13) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func InitializeSummoningCircles() { + var v0 int + v0 = 0 + for { + if !(v0 < 10) { + goto LABEL1 + } + flag44[v0] = true + ivar43[v0] = 0 + v0 += 1 + } +LABEL1: + str46[0] = "UrchinShaman" + str46[1] = "Mimic" + str46[2] = "Bear" + str46[3] = "Urchin" + str46[4] = "Imp" + str46[5] = "WhiteWolf" + obj35 = ns.Object("SummoningCircleTreasureLight") + obj36[0] = ns.Object("SummoningCircleTreasure01") + obj36[1] = ns.Object("SummoningCircleTreasure02") + obj36[2] = ns.Object("SummoningCircleTreasure03") + obj36[3] = ns.Object("SummoningCircleTreasure04") + obj36[4] = ns.Object("SummoningCircleTreasure05") + obj36[5] = ns.Object("SummoningCircleTreasure06") + obj36[6] = ns.Object("SummoningCircleTreasure07") + obj36[7] = ns.Object("SummoningCircleTreasure08") + obj36[8] = ns.Object("SummoningCircleTreasure09") + wp45[0] = ns.Waypoint("SummoningCircle01WP") + wp45[1] = ns.Waypoint("SummoningCircle02WP") + wp45[2] = ns.Waypoint("SummoningCircle03WP") + wp45[3] = ns.Waypoint("SummoningCircle04WP") + wp45[4] = ns.Waypoint("SummoningCircle05WP") + wp45[5] = ns.Waypoint("SummoningCircle06WP") + wp45[6] = ns.Waypoint("SummoningCircle07WP") + wp45[7] = ns.Waypoint("SummoningCircle08WP") + wp45[8] = ns.Waypoint("SummoningCircle09WP") + wp45[9] = ns.Waypoint("SummoningCircle10WP") + gvar33[0] = ns.ObjectGroup("SummonCircle01Lights") + gvar33[1] = ns.ObjectGroup("SummonCircle02Lights") + gvar33[2] = ns.ObjectGroup("SummonCircle03Lights") + gvar33[3] = ns.ObjectGroup("SummonCircle04Lights") + gvar33[4] = ns.ObjectGroup("SummonCircle05Lights") + gvar33[5] = ns.ObjectGroup("SummonCircle06Lights") + gvar33[6] = ns.ObjectGroup("SummonCircle07Lights") + gvar33[7] = ns.ObjectGroup("SummonCircle08Lights") + gvar33[8] = ns.ObjectGroup("SummonCircle09Lights") + gvar33[9] = ns.ObjectGroup("SummonCircle10Lights") +} +func MapInitialize() { + obj8 = ns.Object("Beholder01") + obj9 = ns.Object("Beholder02") + obj15 = ns.Object("Beholder03") + obj16 = ns.Object("Bat01") + obj17 = ns.Object("StoneBlock01") + obj18 = ns.Object("StoneBlock02") + obj19 = ns.Object("StoneBlock03") + obj20 = ns.Object("StoneBlock04") + obj21 = ns.Object("BomberPitElevator") + obj22 = ns.Object("SpiderPitElevator") + wp23 = ns.Waypoint("StoneBlock01WP") + wp26 = ns.Waypoint("StoneBlock02Home") + wp28 = ns.Waypoint("StoneBlock03Home") + wp25 = ns.Waypoint("StoneBlock02Dest") + wp27 = ns.Waypoint("StoneBlock03Dest") + wp24 = ns.Waypoint("StoneBlock04WP") + wp14 = ns.Waypoint("GoldKeyWP") + wp30 = ns.Waypoint("BomberCreationWP") + wp10 = ns.Waypoint("BomberAudioOrigin") + wp29 = ns.Waypoint("Beholder01SetPieceWP") + wp11 = ns.Waypoint("BeholderRoomExitWP") + wp7 = ns.Waypoint("ArrowTrapAudioOrigin") + wp31 = ns.Waypoint("SecretAudioOrigin") + gvar4 = ns.ObjectGroup("ArrowTrapGroup01") + gvar5 = ns.ObjectGroup("ArrowTrapGroup02") + gvar6 = ns.ObjectGroup("ArrowTrapGroup03") + gvar12 = ns.WallGroup("GoldKeyWalls") + gvar13 = ns.WallGroup("BomberCageWalls") + InitializeSummoningCircles() +} +func MapEntry() { + ns.Music(18, 100) + ns.UnBlind() +} +func EnableSpiderPitElevator() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOn(obj22) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp31, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp31) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func SealTheTempleFX() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(ns.GetHost()) + v1 = ns.GetObjectY(ns.GetHost()) + ns.AudioEvent(ns.HugeFoot, wp23) + ns.Effect(ns.JIGGLE, v0, v1, 10, 0) +} +func SealTheTemple() { + ns.ObjectOff(ns.GetTrigger()) + ns.Move(obj17, wp23) + ns.Move(obj20, wp24) + ns.AudioEvent(ns.BigGong, wp23) + ns.AudioEvent(ns.SecretWallClose, wp23) + ns.FrameTimer(10, SealTheTempleFX) +} +func EnableElevator() { + ns.ObjectOn(obj21) +} +func ReleasePlayer() { + ns.WideScreen(false) + ns.ClearOwner(obj8) + ns.Frozen(ns.GetHost(), false) + if !(ns.CurrentHealth(obj16) > 0) { + goto LABEL1 + } + ns.ObjectOn(obj16) +LABEL1: + ns.NoWallSound(true) + ns.WallClose(ns.Wall(169, 87)) + ns.NoWallSound(false) + ns.FrameTimer(60, EnableElevator) +} +func BeholderSetpieceSEG3() { + ns.FrameTimer(60, ReleasePlayer) +} +func BeholderSetpieceSEG2() { + ns.Move(obj8, wp29) + ns.FrameTimer(180, ReleasePlayer) +} +func BeholderSetpiece() { + ns.SetOwner(ns.GetHost(), obj8) + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.WideScreen(true) + if !(ns.CurrentHealth(obj16) > 0) { + goto LABEL1 + } + ns.ObjectOff(obj16) +LABEL1: + ns.FrameTimer(60, BeholderSetpieceSEG2) +} +func DisableBomberPitElevator() { + ns.ObjectOff(obj21) +} +func BlockGatesFX() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(ns.GetHost()) + v1 = ns.GetObjectY(ns.GetHost()) + ns.AudioEvent(ns.HugeFoot, wp25) + ns.Effect(ns.JIGGLE, v0, v1, 10, 0) +} +func CloseBlockGates() { + ns.Move(obj18, wp25) + ns.Move(obj19, wp27) + ns.AudioEvent(ns.SecretWallClose, wp25) + ns.AudioEvent(ns.SecretWallClose, wp27) + ns.FrameTimer(10, BlockGatesFX) +} +func SealBeholderRoom() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallClose(ns.Wall(209, 109)) + ns.MoveObject(obj8, ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.AggressionLevel(obj8, 0.83) + ns.AggressionLevel(obj9, 0.83) + ns.Wander(obj8) + ns.Wander(obj9) +} +func ResetSummonCircle(a1 int) { + flag44[a1] = true + ns.ObjectGroupOn(gvar33[a1]) +} +func SummoningCircleCleared(a1 int) { + ivar39 += 1 + if ivar39 != 9 { + goto LABEL1 + } + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 500) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1]), 0, 0) + ns.MoveObject(obj35, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.MoveObject(obj36[ivar39-1], ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.AudioEvent(ns.SmallGong, wp45[a1]) + goto LABEL2 +LABEL1: + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1]), 0, 0) + ns.MoveObject(obj35, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.MoveObject(obj36[ivar39-1], ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.AudioEvent(ns.BigGong, wp45[a1]) +LABEL2: + return +} +func SummonCircle01Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 0 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle02Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 1 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle03Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 2 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle04Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 3 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle05Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 4 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle06Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 5 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle07Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 6 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle08Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 7 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle09Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 8 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle10Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 9 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func EnableBomberPitElevator() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOn(obj21) +LABEL1: + return +} +func OpenBomberPitExit() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(159, 109)) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con08c/dummy_test.go b/examples/con08c/dummy_test.go new file mode 100644 index 0000000..1e16616 --- /dev/null +++ b/examples/con08c/dummy_test.go @@ -0,0 +1,6 @@ +package con08c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con08d/con08d.go b/examples/con08d/con08d.go new file mode 100644 index 0000000..efca555 --- /dev/null +++ b/examples/con08d/con08d.go @@ -0,0 +1,2351 @@ +package con08d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + gvar5 ns.ObjectGroupID + gvar6 ns.ObjectGroupID + gvar7 ns.ObjectGroupID + gvar8 ns.ObjectGroupID + wp9 ns.WaypointID + ivar10 int + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + wp25 ns.WaypointID + wp26 ns.WaypointID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + fvar41 float32 + fvar42 float32 + ivar43 int + str44 [3]string + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + flag53 bool + obj54 ns.ObjectID + obj55 ns.ObjectID + gvar56 ns.WallGroupID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + gvar68 ns.ObjectGroupID + wp69 ns.WaypointID + wp70 ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + wp73 ns.WaypointID + wp74 ns.WaypointID + wp75 ns.WaypointID + obj76 ns.ObjectID + obj77 [15]ns.ObjectID + gvar78 [21]ns.ObjectGroupID + gvar79 int + ivar80 int + ivar81 int + ivar82 int + ivar83 int + ivar84 int + ivar85 [21]int + flag86 [21]bool + wp87 [21]ns.WaypointID + str88 [6]string +) + +func init() { + ivar10 = 0 + fvar41 = 0 + fvar42 = 0 + ivar43 = 0 + flag53 = false + gvar79 = 0 + ivar80 = 1 + ivar81 = 0 + ivar82 = 10 + ivar83 = 180 + ivar84 = 0 +} +func ArrowTrapAudio() { + ns.MoveWaypoint(wp9, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +} +func DisableArrowTrap01() { + ns.ObjectGroupOff(gvar5) +} +func ActivateArrowTrap01() { + ns.ObjectGroupOn(gvar5) + ns.FrameTimer(1, DisableArrowTrap01) +} +func DisableArrowTrap02() { + ns.ObjectGroupOff(gvar6) +} +func ActivateArrowTrap02() { + ns.ObjectGroupOn(gvar6) + ns.FrameTimer(1, DisableArrowTrap02) +} +func DisableArrowTrap03() { + ns.ObjectGroupOff(gvar7) +} +func ActivateArrowTrap03() { + ns.ObjectGroupOn(gvar7) + ns.FrameTimer(1, DisableArrowTrap03) +} +func DisableUltimateArrowTrapGuns() { + ns.ObjectGroupOff(gvar8) +} +func ResetUltimateArrowTrap() { + ns.ObjectOn(obj4) +} +func UltimateArrowTrapLoop() { + if !(ivar10 < 8) { + goto LABEL1 + } + ivar10 += 1 + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, UltimateArrowTrapLoop) +LABEL1: + if ivar10 != 8 { + goto LABEL2 + } + ivar10 = 0 + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, ResetUltimateArrowTrap) +LABEL2: + return +} +func ActivateUltimateArrowTrap() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, UltimateArrowTrapLoop) +} +func InitializeBeholders() { + str44[0] = "SPELL_STUN" + str44[1] = "SPELL_CONFUSE" + str44[2] = "SPELL_FUMBLE" +} +func BeholderIdle() { + ns.Wander(ns.GetTrigger()) +} +func Beholder01Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj11) > 0 && ns.CurrentHealth(obj27) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj11) + v1 = ns.GetObjectY(obj11) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj11, obj27) + ns.CreatureFollow(obj27, obj11) +LABEL1: + return +} +func Beholder01Recognize() { + ns.FrameTimer(90, Beholder01Bombers) +} +func Beholder01Die() { + ns.Damage(obj27, 0, 500, 0) +} +func Beholder02Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj12) > 0 && ns.CurrentHealth(obj28) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj12) + v1 = ns.GetObjectY(obj12) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj12, obj28) + ns.CreatureFollow(obj28, obj12) +LABEL1: + return +} +func Beholder02Recognize() { + ns.FrameTimer(90, Beholder02Bombers) +} +func Beholder02Die() { + ns.Damage(obj28, 0, 500, 0) +} +func Beholder03Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj13) > 0 && ns.CurrentHealth(obj29) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj13) + v1 = ns.GetObjectY(obj13) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj13, obj29) + ns.CreatureFollow(obj29, obj13) +LABEL1: + return +} +func Beholder03Recognize() { + ns.FrameTimer(90, Beholder03Bombers) +} +func Beholder03Die() { + ns.Damage(obj29, 0, 500, 0) +} +func Beholder04Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj14) > 0 && ns.CurrentHealth(obj30) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj14) + v1 = ns.GetObjectY(obj14) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj14, obj30) + ns.CreatureFollow(obj30, obj14) +LABEL1: + return +} +func Beholder04Recognize() { + ns.FrameTimer(90, Beholder04Bombers) +} +func Beholder04Die() { + ns.Damage(obj30, 0, 500, 0) +} +func Beholder05Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj15) > 0 && ns.CurrentHealth(obj31) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj15) + v1 = ns.GetObjectY(obj15) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj15, obj31) + ns.CreatureFollow(obj31, obj15) +LABEL1: + return +} +func Beholder05Recognize() { + ns.FrameTimer(90, Beholder05Bombers) +} +func Beholder05Die() { + ns.Damage(obj31, 0, 500, 0) +} +func Beholder06Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj16) > 0 && ns.CurrentHealth(obj32) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj16) + v1 = ns.GetObjectY(obj16) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj16, obj32) + ns.CreatureFollow(obj32, obj16) +LABEL1: + return +} +func Beholder06Recognize() { + ns.FrameTimer(90, Beholder06Bombers) +} +func Beholder06Die() { + ns.Damage(obj32, 0, 500, 0) +} +func Beholder07Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj17) > 0 && ns.CurrentHealth(obj33) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj17) + v1 = ns.GetObjectY(obj17) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj17, obj33) + ns.CreatureFollow(obj33, obj17) +LABEL1: + return +} +func Beholder07Recognize() { + ns.FrameTimer(90, Beholder07Bombers) +} +func Beholder07Die() { + ns.Damage(obj33, 0, 500, 0) +} +func Beholder08Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj18) > 0 && ns.CurrentHealth(obj34) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj18) + v1 = ns.GetObjectY(obj18) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj18, obj34) + ns.CreatureFollow(obj34, obj18) +LABEL1: + return +} +func Beholder08Recognize() { + ns.FrameTimer(90, Beholder08Bombers) +} +func Beholder08Die() { + ns.Damage(obj34, 0, 500, 0) +} +func Beholder09Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj19) > 0 && ns.CurrentHealth(obj35) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj19) + v1 = ns.GetObjectY(obj19) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj19, obj35) + ns.CreatureFollow(obj35, obj19) +LABEL1: + return +} +func Beholder09Recognize() { + ns.FrameTimer(90, Beholder09Bombers) +} +func Beholder09Die() { + ns.Damage(obj35, 0, 500, 0) +} +func Beholder10Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj20) > 0 && ns.CurrentHealth(obj36) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj20) + v1 = ns.GetObjectY(obj20) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj20, obj36) + ns.CreatureFollow(obj36, obj20) +LABEL1: + return +} +func Beholder10Recognize() { + ns.FrameTimer(90, Beholder10Bombers) +} +func Beholder10Die() { + ns.Damage(obj36, 0, 500, 0) +} +func Beholder11Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj21) > 0 && ns.CurrentHealth(obj37) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj21) + v1 = ns.GetObjectY(obj21) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj21, obj37) + ns.CreatureFollow(obj37, obj21) +LABEL1: + return +} +func Beholder11Recognize() { + ns.FrameTimer(90, Beholder11Bombers) +} +func Beholder11Die() { + ns.Damage(obj37, 0, 500, 0) +} +func Beholder12Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj22) > 0 && ns.CurrentHealth(obj38) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj22) + v1 = ns.GetObjectY(obj22) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj22, obj38) + ns.CreatureFollow(obj38, obj22) +LABEL1: + return +} +func Beholder12Recognize() { + ns.FrameTimer(90, Beholder12Bombers) +} +func Beholder12Die() { + ns.Damage(obj38, 0, 500, 0) +} +func Beholder13Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj23) > 0 && ns.CurrentHealth(obj39) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj23) + v1 = ns.GetObjectY(obj23) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj23, obj39) + ns.CreatureFollow(obj39, obj23) +LABEL1: + return +} +func Beholder13Recognize() { + ns.FrameTimer(90, Beholder13Bombers) +} +func Beholder13Die() { + ns.Damage(obj39, 0, 500, 0) +} +func Beholder14Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj24) > 0 && ns.CurrentHealth(obj40) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj24) + v1 = ns.GetObjectY(obj24) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj24, obj40) + ns.CreatureFollow(obj40, obj24) +LABEL1: + return +} +func Beholder14Recognize() { + ns.FrameTimer(90, Beholder14Bombers) +} +func Beholder14Die() { + ns.Damage(obj40, 0, 500, 0) +} +func OpenBlockPassage() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SpikeBlockMove, wp52) + ns.Move(obj45, wp48) + ns.Move(obj46, wp49) + ns.Move(obj47, wp51) +} +func SealBlockRoom() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.Move(obj46, wp50) +} +func CagedAnimalDie() { + if flag53 { + goto LABEL1 + } + flag53 = true + ns.WallGroupBreak(gvar56) +LABEL1: + return +} +func UnlockBearCage() { + ns.ObjectOff(ns.GetTrigger()) + ns.UnlockDoor(obj54) + ns.UnlockDoor(obj55) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func FireFONTrap01() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj57, ns.GetWaypointX(wp69), ns.GetWaypointY(wp69)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj58, ns.GetWaypointX(wp70), ns.GetWaypointY(wp70)) + ns.SecondTimer(5, FireFONTrap01) +} +func EndFONSetpiece() { + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) +} +func BearAttack() { + ns.EnchantOff(obj62, ns.ENCHANT_INVULNERABLE) + ns.AggressionLevel(obj62, 0.83) + ns.Attack(obj62, ns.GetHost()) + ns.FrameTimer(45, FireFONTrap01) +} +func InitializeFONtraps() { + obj57 = ns.Object("FON_Origin01") + obj58 = ns.Object("FON_Origin02") + obj59 = ns.Object("FON_Origin03") + obj60 = ns.Object("FON_Origin04") + obj61 = ns.Object("FON_Origin05") + obj62 = ns.Object("Bear01") + obj63 = ns.Object("SpikeTrapDoor01") + obj64 = ns.Object("SpikeTrapDoor02") + obj65 = ns.Object("SpikeTrapDoor03") + obj66 = ns.Object("SpikeTrapDoor04") + gvar68 = ns.ObjectGroup("SpikeGroup01") + wp69 = ns.Waypoint("FON_Target01") + wp70 = ns.Waypoint("FON_Target02") + wp71 = ns.Waypoint("FON_Target03") + wp72 = ns.Waypoint("FON_Target04") + wp73 = ns.Waypoint("FON_Target05") + wp74 = ns.Waypoint("SpikeTrapAudioOrigin") + ns.Enchant(obj62, ns.ENCHANT_INVULNERABLE, 0) +} +func StartFONSetpiece() { + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.CreatureIdle(ns.GetHost()) + BearAttack() +} +func BearDie() { + ns.FrameTimer(60, EndFONSetpiece) +} +func BearInjured() { + ns.Damage(ns.GetTrigger(), 0, 300, 0) +} +func FireFONTrap02() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj59, ns.GetWaypointX(wp71), ns.GetWaypointY(wp71)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj60, ns.GetWaypointX(wp72), ns.GetWaypointY(wp72)) +} +func EnableSpikeTrap() { + ns.ObjectGroupOn(gvar68) + ns.ObjectOn(obj67) + ns.AudioEvent(ns.FloorSpikesUp, wp74) + ns.LockDoor(obj63) + ns.LockDoor(obj64) + ns.LockDoor(obj65) + ns.LockDoor(obj66) +} +func DisableSpikeTrap() { + ns.ObjectGroupOff(gvar68) + ns.ObjectOff(obj67) + ns.AudioEvent(ns.FloorSpikesDown, wp74) + ns.UnlockDoor(obj63) + ns.UnlockDoor(obj64) + ns.UnlockDoor(obj65) + ns.UnlockDoor(obj66) +} +func InitializeSummoningCircles() { + var v0 int + v0 = 0 + for { + if !(v0 < 21) { + goto LABEL1 + } + flag86[v0] = true + ivar85[v0] = 0 + v0 += 1 + } +LABEL1: + str88[0] = "UrchinShaman" + str88[1] = "Mimic" + str88[2] = "Bear" + str88[3] = "Urchin" + str88[4] = "Imp" + str88[5] = "WhiteWolf" + obj76 = ns.Object("SummoningCircleTreasureLight") + obj77[0] = ns.Object("SummoningCircleTreasure01") + obj77[1] = ns.Object("SummoningCircleTreasure02") + obj77[2] = ns.Object("SummoningCircleTreasure03") + obj77[3] = ns.Object("SummoningCircleTreasure04") + obj77[4] = ns.Object("SummoningCircleTreasure05") + obj77[5] = ns.Object("SummoningCircleTreasure06") + obj77[6] = ns.Object("SummoningCircleTreasure07") + obj77[7] = ns.Object("SummoningCircleTreasure08") + obj77[8] = ns.Object("SummoningCircleTreasure09") + obj77[9] = ns.Object("SummoningCircleTreasure10") + obj77[10] = ns.Object("SummoningCircleTreasure11") + obj77[11] = ns.Object("SummoningCircleTreasure12") + obj77[12] = ns.Object("SummoningCircleTreasure13") + obj77[13] = ns.Object("SummoningCircleTreasure14") + obj77[14] = ns.Object("SummoningCircleTreasure15") + wp87[0] = ns.Waypoint("SummoningCircle01WP") + wp87[1] = ns.Waypoint("SummoningCircle02WP") + wp87[2] = ns.Waypoint("SummoningCircle03WP") + wp87[3] = ns.Waypoint("SummoningCircle04WP") + wp87[4] = ns.Waypoint("SummoningCircle05WP") + wp87[5] = ns.Waypoint("SummoningCircle06WP") + wp87[6] = ns.Waypoint("SummoningCircle07WP") + wp87[7] = ns.Waypoint("SummoningCircle08WP") + wp87[8] = ns.Waypoint("SummoningCircle09WP") + wp87[9] = ns.Waypoint("SummoningCircle10WP") + wp87[10] = ns.Waypoint("SummoningCircle11WP") + wp87[11] = ns.Waypoint("SummoningCircle12WP") + wp87[12] = ns.Waypoint("SummoningCircle13WP") + wp87[13] = ns.Waypoint("SummoningCircle14WP") + wp87[14] = ns.Waypoint("SummoningCircle15WP") + wp87[15] = ns.Waypoint("SummoningCircle16WP") + wp87[16] = ns.Waypoint("SummoningCircle17WP") + wp87[17] = ns.Waypoint("SummoningCircle18WP") + wp87[18] = ns.Waypoint("SummoningCircle19WP") + wp87[19] = ns.Waypoint("SummoningCircle20WP") + wp87[20] = ns.Waypoint("SummoningCircle21WP") + gvar78[0] = ns.ObjectGroup("SummonCircle01Lights") + gvar78[1] = ns.ObjectGroup("SummonCircle02Lights") + gvar78[2] = ns.ObjectGroup("SummonCircle03Lights") + gvar78[3] = ns.ObjectGroup("SummonCircle04Lights") + gvar78[4] = ns.ObjectGroup("SummonCircle05Lights") + gvar78[5] = ns.ObjectGroup("SummonCircle06Lights") + gvar78[6] = ns.ObjectGroup("SummonCircle07Lights") + gvar78[7] = ns.ObjectGroup("SummonCircle08Lights") + gvar78[8] = ns.ObjectGroup("SummonCircle09Lights") + gvar78[9] = ns.ObjectGroup("SummonCircle10Lights") + gvar78[10] = ns.ObjectGroup("SummonCircle11Lights") + gvar78[11] = ns.ObjectGroup("SummonCircle12Lights") + gvar78[12] = ns.ObjectGroup("SummonCircle13Lights") + gvar78[13] = ns.ObjectGroup("SummonCircle14Lights") + gvar78[14] = ns.ObjectGroup("SummonCircle15Lights") + gvar78[15] = ns.ObjectGroup("SummonCircle16Lights") + gvar78[16] = ns.ObjectGroup("SummonCircle17Lights") + gvar78[17] = ns.ObjectGroup("SummonCircle18Lights") + gvar78[18] = ns.ObjectGroup("SummonCircle19Lights") + gvar78[19] = ns.ObjectGroup("SummonCircle20Lights") + gvar78[20] = ns.ObjectGroup("SummonCircle21Lights") +} +func MapInitialize() { + obj45 = ns.Object("StoneBlock01") + obj46 = ns.Object("StoneBlock02") + obj47 = ns.Object("StoneBlock03") + obj11 = ns.Object("Beholder01") + obj12 = ns.Object("Beholder02") + obj13 = ns.Object("Beholder03") + obj14 = ns.Object("Beholder04") + obj15 = ns.Object("Beholder05") + obj16 = ns.Object("Beholder06") + obj17 = ns.Object("Beholder07") + obj18 = ns.Object("Beholder08") + obj19 = ns.Object("Beholder09") + obj20 = ns.Object("Beholder10") + obj21 = ns.Object("Beholder11") + obj22 = ns.Object("Beholder12") + obj23 = ns.Object("Beholder13") + obj24 = ns.Object("Beholder14") + obj54 = ns.Object("CageGateL") + obj55 = ns.Object("CageGateR") + obj4 = ns.Object("UltimateArrowTrapSwitch") + obj67 = ns.Object("SpikeSFX") + wp9 = ns.Waypoint("ArrowTrapAudioOrigin") + wp48 = ns.Waypoint("StoneBlock01WP") + wp49 = ns.Waypoint("StoneBlock02WP") + wp50 = ns.Waypoint("StoneBlock02WP2") + wp51 = ns.Waypoint("StoneBlock03WP") + wp52 = ns.Waypoint("StoneBlockAudioOrigin") + wp25 = ns.Waypoint("BomberCreationWP") + wp26 = ns.Waypoint("BomberAudioOrigin") + wp75 = ns.Waypoint("SecretAudioOrigin") + gvar5 = ns.ObjectGroup("ArrowTrapGroup01") + gvar6 = ns.ObjectGroup("ArrowTrapGroup02") + gvar7 = ns.ObjectGroup("ArrowTrapGroup03") + gvar8 = ns.ObjectGroup("ArrowTrapGroup04") + gvar56 = ns.WallGroup("CageWalls") + ns.Wander(obj11) + ns.Wander(obj12) + ns.Wander(obj13) + ns.AggressionLevel(obj13, 0.83) + ns.Wander(obj14) + ns.AggressionLevel(obj14, 0.83) + ns.Wander(obj15) + ns.AggressionLevel(obj15, 0.83) + ns.Wander(obj16) + ns.AggressionLevel(obj16, 0.83) + ns.Wander(obj17) + ns.AggressionLevel(obj17, 0.83) + ns.Wander(obj18) + ns.AggressionLevel(obj18, 0.83) + ns.Wander(obj19) + ns.AggressionLevel(obj19, 0.83) + ns.Wander(obj20) + ns.AggressionLevel(obj20, 0.83) + ns.Wander(obj21) + ns.AggressionLevel(obj21, 0.83) + ns.Wander(obj22) + ns.AggressionLevel(obj22, 0.83) + ns.LockDoor(obj54) + ns.LockDoor(obj55) + InitializeBeholders() + InitializeSummoningCircles() + InitializeFONtraps() +} +func OpenPitElevatorWall() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(56, 134)) +} +func MonstersGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp75, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp75) +} +func BoulderSecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 200) + SecretSFX() +} +func OpenBoulderSecret() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(104, 40)) + ns.AudioEvent(ns.SecretWallOpen, ns.Waypoint("BoulderSecretAudioOrigin")) + SecretSFX() +} +func SecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func ResetSummonCircle(a1 int) { + flag86[a1] = true + ns.ObjectGroupOn(gvar78[a1]) +} +func SummoningCircleCleared(a1 int) { + ivar84 += 1 + if ivar84 != 15 { + goto LABEL1 + } + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 500) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1]), 0, 0) + ns.MoveObject(obj76, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.MoveObject(obj77[ivar84-1], ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.AudioEvent(ns.SmallGong, wp87[a1]) + goto LABEL2 +LABEL1: + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1]), 0, 0) + ns.MoveObject(obj76, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.MoveObject(obj77[ivar84-1], ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.AudioEvent(ns.BigGong, wp87[a1]) +LABEL2: + return +} +func SummonCircle01Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 0 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle02Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 1 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle03Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 2 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle04Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 3 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle05Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 4 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle06Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 5 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle07Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 6 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle08Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 7 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle09Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 8 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle10Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 9 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle11Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 10 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle12Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 11 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle13Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 12 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle14Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 13 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle15Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 14 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle16Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 15 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle17Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 16 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle18Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 17 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle19Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 18 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle20Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 19 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle21Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 20 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con08d/dummy_test.go b/examples/con08d/dummy_test.go new file mode 100644 index 0000000..d1e4f01 --- /dev/null +++ b/examples/con08d/dummy_test.go @@ -0,0 +1,6 @@ +package con08d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con08e/con08e.go b/examples/con08e/con08e.go new file mode 100644 index 0000000..0405a0b --- /dev/null +++ b/examples/con08e/con08e.go @@ -0,0 +1,394 @@ +package con08e + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + wp9 ns.WaypointID + wp10 ns.WaypointID + wp11 ns.WaypointID + wp12 ns.WaypointID + wp13 ns.WaypointID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.WallGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + gvar30 ns.WallGroupID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + gvar41 int + gvar42 int + gvar43 int + gvar44 int + gvar45 int + gvar46 int + gvar47 int + gvar48 int + gvar49 int + obj50 ns.ObjectID + obj51 ns.ObjectID + flag52 bool + flag53 bool + flag54 bool + flag55 bool + flag56 bool + wp57 ns.WaypointID + flag58 bool +) + +func init() { + gvar41 = 0 + gvar42 = 1 + gvar43 = 2 + gvar44 = 3 + gvar45 = 4 + gvar46 = 5 + gvar47 = 6 + gvar48 = gvar41 + gvar49 = gvar46 + flag52 = false + flag53 = false + flag54 = false + flag55 = false + flag56 = false + flag58 = false +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func FireFONTrap01() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj4, ns.GetWaypointX(wp9), ns.GetWaypointY(wp9)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj5, ns.GetWaypointX(wp10), ns.GetWaypointY(wp10)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj6, ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj7, ns.GetWaypointX(wp12), ns.GetWaypointY(wp12)) + ns.SecondTimer(5, FireFONTrap01) +} +func InitializeFONtraps() { + obj4 = ns.Object("FON_Origin01") + obj5 = ns.Object("FON_Origin02") + obj6 = ns.Object("FON_Origin03") + obj7 = ns.Object("FON_Origin04") + obj8 = ns.Object("FON_Origin05") + wp9 = ns.Waypoint("FON_Target01") + wp10 = ns.Waypoint("FON_Target02") + wp11 = ns.Waypoint("FON_Target03") + wp12 = ns.Waypoint("FON_Target04") + wp13 = ns.Waypoint("FON_Target05") + FireFONTrap01() +} +func OpenFONSecret() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SecretWallOpen, ns.Waypoint("FonSecretWP")) + ns.WallOpen(ns.Wall(44, 122)) +} +func MapInitialize() { + obj14 = ns.Object("MoverA1") + obj15 = ns.Object("MoverA2") + obj16 = ns.Object("MoverA3") + obj17 = ns.Object("MoverB1") + obj18 = ns.Object("MoverB2") + obj19 = ns.Object("MoverB3") + obj20 = ns.Object("Priest01") + obj21 = ns.Object("Priest02") + obj22 = ns.Object("Imp01") + obj23 = ns.Object("Imp02") + obj24 = ns.Object("WierdlingPool") + wp31 = ns.Waypoint("GolemWP_A") + wp32 = ns.Waypoint("GolemWP_B") + wp33 = ns.Waypoint("Priest01WP") + wp34 = ns.Waypoint("Priest02WP") + wp35 = ns.Waypoint("Priest1Home") + wp36 = ns.Waypoint("Priest2Home") + wp37 = ns.Waypoint("Priest1ExitWP") + wp38 = ns.Waypoint("Priest2ExitWP") + wp39 = ns.Waypoint("ImpCreationWP") + wp40 = ns.Waypoint("WierdlingPoolWP") + gvar25 = ns.ObjectGroup("GolemLights") + gvar26 = ns.ObjectGroup("GolemHandleTriggers") + gvar27 = ns.WallGroup("GolemArenaEntranceWalls") + gvar28 = ns.WallGroup("GolemArenaExitWalls") + gvar29 = ns.WallGroup("WierdlingExitWalls") + gvar30 = ns.WallGroup("AldwynElevatorWalls") + ns.SetOwner(ns.GetHost(), obj20) + ns.SetOwner(ns.GetHost(), obj21) + InitializeFONtraps() +} +func OpenElevatorWalls() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar30) +} +func NoMonsters() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlaySub1Music() { + ns.Music(18, 100) +} +func PlaySub2Music() { + ns.Music(19, 100) +} +func SecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(ns.Waypoint("FonSecretWP"), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, ns.Waypoint("FonSecretWP")) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 200) +} +func PriestReport() { + var v0 int + v0 = gvar48 + if v0 == gvar42 { + goto LABEL1 + } + if v0 == gvar43 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + if !ns.IsTrigger(obj22) { + goto LABEL4 + } + flag53 = true + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj22), ns.GetObjectY(obj22), 0, 0) + ns.AudioEvent(ns.ImpRecognize, wp57) + ns.MoveObject(obj20, ns.GetObjectX(obj22), ns.GetObjectY(obj22)) + ns.Delete(obj22) +LABEL4: + if !ns.IsTrigger(obj23) { + goto LABEL5 + } + flag54 = true + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj23), ns.GetObjectY(obj23), 0, 0) + ns.AudioEvent(ns.ImpRecognize, wp57) + ns.MoveObject(obj21, ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + ns.Delete(obj23) +LABEL5: + if !flag53 { + goto LABEL6 + } + if !flag54 { + goto LABEL6 + } + gvar48 = gvar44 + ns.FrameTimer(30, SummonGolems) +LABEL6: + goto LABEL3 +LABEL2: + if !ns.IsTrigger(obj22) { + goto LABEL7 + } + flag55 = true +LABEL7: + if !ns.IsTrigger(obj23) { + goto LABEL8 + } + flag56 = true +LABEL8: + if !(flag55 && flag56) { + goto LABEL9 + } + ns.WallGroupClose(gvar28) + gvar48 = gvar45 + ns.Delete(obj22) + ns.Delete(obj23) +LABEL9: + goto LABEL3 +LABEL3: + return +} +func GolemDie() { + if !(ns.CurrentHealth(obj50) <= 0 && ns.CurrentHealth(obj51) <= 0) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 1000) + ns.WallGroupOpen(gvar28) + ns.AudioEvent(ns.BigGong, wp33) + ns.AudioEvent(ns.BigGong, wp34) +LABEL1: + return +} +func GolemsAttack() { + ns.Attack(obj50, ns.GetHost()) + ns.Attack(obj51, ns.GetHost()) +} +func RemoveLetterbox() { + ns.WideScreen(false) + ns.Delete(obj22) + ns.Delete(obj23) + ns.Frozen(ns.GetHost(), false) + ns.FrameTimer(45, GolemsAttack) + ns.Music(27, 100) +} +func ImpsExit() { + ns.Move(obj22, wp37) + ns.Move(obj23, wp38) +} +func PriestsExit() { + gvar48 = gvar43 + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj20), ns.GetObjectY(obj20), 0, 0) + ns.MoveWaypoint(wp39, ns.GetObjectX(obj20), ns.GetObjectY(obj20)) + obj22 = ns.CreateObject("Imp", wp39) + ns.MoveObject(obj20, ns.GetWaypointX(wp35), ns.GetWaypointY(wp35)) + ns.AudioEvent(ns.ImpRecognize, wp57) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj21), ns.GetObjectY(obj21), 0, 0) + ns.MoveWaypoint(wp39, ns.GetObjectX(obj21), ns.GetObjectY(obj21)) + obj23 = ns.CreateObject("Imp", wp39) + ns.MoveObject(obj21, ns.GetWaypointX(wp36), ns.GetWaypointY(wp36)) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj23) + ns.AggressionLevel(obj22, 0) + ns.AggressionLevel(obj23, 0) + ns.SetCallback(obj22, 11, PriestReport) + ns.SetCallback(obj23, 11, PriestReport) + ns.FrameTimer(1, ImpsExit) +} +func GetGolemHandles() { + var v0 int + if !(flag52 || ns.IsCaller(obj22) || ns.IsCaller(obj23)) { + goto LABEL1 + } + return +LABEL1: + v0 = gvar49 + if v0 == gvar46 { + goto LABEL2 + } + if v0 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL2: + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + obj50 = ns.GetCaller() + ns.SetCallback(obj50, 5, GolemDie) + ns.ClearOwner(obj20) + ns.CreatureIdle(obj50) + ns.ClearOwner(obj50) + ns.AggressionLevel(obj50, 0) + gvar49 = gvar47 + goto LABEL5 +LABEL3: + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + obj51 = ns.GetCaller() + ns.SetCallback(obj51, 5, GolemDie) + ns.ClearOwner(obj21) + ns.ClearOwner(obj51) + ns.CreatureIdle(obj51) + ns.AggressionLevel(obj51, 0) + ns.LookAtObject(obj50, ns.GetHost()) + ns.LookAtObject(obj51, ns.GetHost()) + flag52 = true + ns.AggressionLevel(obj50, 0.83) + ns.AggressionLevel(obj51, 0.83) + RemoveLetterbox() + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func SummonGolems() { + ns.CastSpellObjectLocation(ns.SPELL_SUMMON_STONE_GOLEM, obj20, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31)) + ns.CastSpellObjectLocation(ns.SPELL_SUMMON_STONE_GOLEM, obj21, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32)) + ns.AudioEvent(ns.SummonCast, wp33) + ns.AudioEvent(ns.SummonCast, wp34) + ns.ObjectGroupOn(gvar26) + ns.ObjectGroupOff(gvar25) + ns.FrameTimer(60, PriestsExit) +} +func ImpsEnter() { + ns.WallGroupOpen(gvar28) + ns.Move(obj22, wp33) + ns.Move(obj23, wp34) +} +func GolemSetPiece() { + if gvar48 == gvar41 { + goto LABEL1 + } + return +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.MusicPushEvent() + ns.Music(10, 100) + wp57 = ns.Waypoint("GolemSP_AudioOrigin") + ns.MoveWaypoint(wp57, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + gvar48 = gvar42 + ns.WallGroupClose(gvar27) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.WideScreen(true) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj23) + ns.FrameTimer(15, ImpsEnter) +LABEL2: + return +} +func Golem01() { + ns.Chat(obj50, "Hi. I'm Golem1.") +} +func Golem02() { + ns.Chat(obj50, "Hi. I'm Golem2, and I'm an alcholic.") +} +func RetrieveWierdling() { + if !flag58 { + goto LABEL1 + } + return +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.SetQuestStatus(1, "Chapter8:HasWeirdling") + flag58 = true + ns.SetHalberd(2) + ns.ObjectOff(obj24) + ns.WallGroupOpen(gvar29) + ns.JournalEdit(ns.GetHost(), "Chapter8Wierdling", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8MeetCaptain", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.MusicPopEvent() +LABEL2: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con08e/dummy_test.go b/examples/con08e/dummy_test.go new file mode 100644 index 0000000..e15b22a --- /dev/null +++ b/examples/con08e/dummy_test.go @@ -0,0 +1,6 @@ +package con08e + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con09a/con09a.go b/examples/con09a/con09a.go new file mode 100644 index 0000000..65a9f89 --- /dev/null +++ b/examples/con09a/con09a.go @@ -0,0 +1,747 @@ +package con09a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 [2]ns.ObjectID + wp5 [2]ns.WaypointID + gvar6 ns.WallGroupID + wp7 [5]ns.WaypointID + wp8 [6]ns.WaypointID + obj9 [6]ns.ObjectID + gvar10 int + ivar11 int + ivar12 int + gvar13 int + flag14 bool + flag15 bool + flag16 bool + fvar17 float32 + fvar18 float32 + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + gvar34 ns.ObjectGroupID + gvar35 ns.ObjectGroupID + gvar36 ns.ObjectGroupID + gvar37 ns.ObjectGroupID + gvar38 ns.ObjectGroupID + gvar39 ns.WallGroupID + gvar40 ns.WallGroupID + gvar41 ns.WallGroupID + gvar42 ns.WallGroupID + gvar43 ns.WallGroupID + gvar44 ns.WallGroupID + gvar45 ns.WallGroupID + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + gvar49 [9]int + wp50 ns.WaypointID + wp51 ns.WaypointID + flag52 bool + flag53 bool + gvar54 int + gvar55 int + gvar56 int + gvar57 int + gvar58 int + gvar59 int + gvar60 int + gvar61 int + gvar62 int + gvar63 int + flag64 bool + gvar65 int + gvar66 int + gvar67 int + gvar68 int + gvar69 int + gvar70 int + ivar71 int + ivar72 int + obj73 [8]ns.ObjectID + wp74 [8]ns.WaypointID + gvar75 [8]int + ivar76 [8]int + gvar77 [8]ns.TimerID +) + +func init() { + gvar10 = 0 + gvar13 = 0 + flag14 = false + flag15 = false + flag16 = false + flag52 = false + flag53 = false + gvar54 = 0 + gvar55 = 1 + gvar56 = 2 + gvar57 = 3 + gvar58 = 4 + gvar59 = 5 + gvar60 = 6 + gvar62 = gvar54 + gvar63 = gvar57 + flag64 = false + gvar65 = 0 + gvar66 = 1 + gvar67 = 2 + gvar68 = 3 + gvar69 = 4 + gvar70 = 5 + ivar71 = 15 + ivar72 = 2 +} +func PlantBarrier() { + ivar11 = 0 + for { + if !(ivar11 < 6) { + goto LABEL1 + } + CreatePlant(ivar11) + ivar11 += 1 + } +LABEL1: + return +} +func CreatePlant(a1 int) { + obj9[a1] = ns.CreateObject("CarnivorousPlant", wp8[a1]) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj9[a1]), ns.GetObjectY(obj9[a1]), 0, 0) + ns.LookAtObject(obj9[a1], ns.GetHost()) + ns.SetOwner(obj4[0], obj9[a1]) + ns.SetCallback(obj9[a1], 7, AttackBack) +} +func CheckPlants() { + if !(flag15 == false || flag16 == false) { + goto LABEL1 + } + ivar11 = 0 + for { + if !(ivar11 < 6) { + goto LABEL2 + } + if !(ns.CurrentHealth(obj9[ivar11]) <= 0) { + goto LABEL3 + } + ns.FrameTimerWithArg(14, ivar11, PlantDie) + LABEL3: + ivar11 += 1 + } +LABEL2: + ns.FrameTimer(15, CheckPlants) +LABEL1: + return +} +func PlantDie(a1 int) { + if !(flag15 == false || flag16 == false) { + goto LABEL1 + } + ns.Delete(obj9[a1]) + CreatePlant(a1) +LABEL1: + return +} +func AttackBack() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Attack(ns.GetTrigger(), ns.GetCaller()) +LABEL1: + return +} +func PlayAction() { + ns.Music(26, 100) +} +func PlaySwamp() { + ns.Music(29, 100) +} +func DryadHuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func StartDryadSequence() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && flag14 == false) { + goto LABEL1 + } + flag14 = true + ns.SetOwner(obj4[0], obj4[1]) + ns.MusicPushEvent() + PlayAction() + ns.NoWallSound(true) + ns.WallGroupClose(gvar6) + ns.NoWallSound(false) + v0 = 0 + for { + if !(v0 < 2) { + goto LABEL2 + } + ns.ObjectOn(obj4[v0]) + ns.Enchant(obj4[v0], ns.ENCHANT_INVISIBLE, 1) + ns.MoveObject(obj4[v0], ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0])) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0]), 0, 0) + v0 += 1 + } +LABEL2: + PlantBarrier() + ns.FrameTimer(1, CheckPlants) +LABEL1: + return +} +func DryadDie() { + if !ns.IsTrigger(obj4[0]) { + goto LABEL1 + } + flag15 = true +LABEL1: + if !ns.IsTrigger(obj4[1]) { + goto LABEL2 + } + flag16 = true +LABEL2: + if !(flag15 == true && flag16 == true) { + goto LABEL3 + } + ns.NoWallSound(true) + ns.WallGroupOpen(gvar6) + ns.NoWallSound(false) + ns.MusicPopEvent() +LABEL3: + return +} +func DryadStay() { + if !(ns.IsCaller(obj4[0]) || ns.IsCaller(obj4[1])) { + goto LABEL1 + } + ivar12 = ns.Random(0, 4) + fvar17 = ns.GetWaypointX(wp7[ivar12]) + fvar18 = ns.GetWaypointY(wp7[ivar12]) + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 1.5) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(ns.GetCaller(), fvar17, fvar18) + ns.Effect(ns.BLUE_SPARKS, fvar17, fvar18, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar17, fvar18, 0, 0) +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func CaptainDialogStart() { + var v0 int + v0 = gvar62 + if v0 == gvar54 { + goto LABEL1 + } + if v0 == gvar55 { + goto LABEL2 + } + if v0 == gvar56 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainGreet") + goto LABEL4 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainLeave") + goto LABEL4 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainImpatient") + goto LABEL4 +LABEL4: + return +} +func CaptainDialogEnd() { + var v0 int + v0 = gvar62 + if v0 == gvar54 { + goto LABEL1 + } + if v0 == gvar55 { + goto LABEL2 + } + if v0 == gvar56 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.JournalEntry(ns.GetHost(), "FindMordwyn", 2) + ns.JournalEntry(ns.GetHost(), "FindOutpost", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + PlaySwamp() + gvar62 = gvar55 + goto LABEL4 +LABEL2: + gvar62 = gvar56 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func MordwynDialogStart() { + var v0 int + v0 = gvar63 + if v0 == gvar57 { + goto LABEL1 + } + if v0 == gvar58 { + goto LABEL2 + } + if v0 == gvar59 { + goto LABEL3 + } + if v0 == gvar60 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War09a:MordwynGreet") + goto LABEL5 +LABEL2: + ns.LookAtObject(obj19, ns.GetHost()) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.SwordsmanHurt, "Con09a:MordwynHome") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con09a:MordwynHome2") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War09a:MordwynDone") + goto LABEL5 +LABEL5: + return +} +func MordwynDialogEnd() { + var v0 int + v0 = gvar63 + if v0 == gvar57 { + goto LABEL1 + } + if v0 == gvar58 { + goto LABEL2 + } + if v0 == gvar59 { + goto LABEL3 + } + if v0 == gvar60 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar63 = gvar58 + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.JournalEdit(ns.GetHost(), "FindMordwyn", 4) + ns.CancelDialog(obj19) + ns.SetCallback(obj19, 11, AllowDialog) + ns.Move(obj19, wp47) + goto LABEL5 +LABEL2: + gvar63 = gvar59 + ns.SetCallback(obj19, 11, GetArmorOfJandor) + ns.Move(obj19, wp48) + goto LABEL5 +LABEL3: + gvar63 = gvar60 + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.CreatureGuard(obj19, ns.GetWaypointX(wp47), ns.GetWaypointY(wp47), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetCallback(obj19, 11, NullFunction) + ns.Pickup(ns.GetHost(), obj23) + ns.Pickup(ns.GetHost(), obj24) + ns.Pickup(ns.GetHost(), obj25) + ns.PrintToAll("Con09a:GainedBowAlt") + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func StartCaptainConversation() { + ns.SetDialog(obj20, ns.NORMAL, CaptainDialogStart, CaptainDialogEnd) + ns.StartDialog(obj20, ns.GetHost()) +} +func WispInitialize() { + obj73[0] = ns.Object("Wisp0") + gvar75[0] = gvar65 + wp74[0] = ns.Waypoint("Wisp0Dest") + obj73[1] = ns.Object("Wisp1") + gvar75[1] = gvar65 + wp74[1] = ns.Waypoint("Wisp1Dest") +} +func MapInitialize() { + obj20 = ns.Object("Jandor") + obj21 = ns.Object("Basket") + obj22 = ns.Object("BasketShadow") + obj19 = ns.Object("Mordwyn") + obj23 = ns.Object("JBow") + obj24 = ns.Object("JQuiver1") + obj25 = ns.Object("JQuiver2") + obj26 = ns.Object("PitElev01") + obj27 = ns.Object("PitElev02") + obj28 = ns.Object("PitElev03") + obj29 = ns.Object("TreasureTrap01") + obj30 = ns.Object("TreasureTrap01Light") + obj31 = ns.Object("Secret02Trigger") + obj4[0] = ns.Object("Dryad0") + obj4[1] = ns.Object("Dryad1") + gvar39 = ns.WallGroup("Surprise00Walls") + gvar40 = ns.WallGroup("Surprise00DestWalls") + gvar41 = ns.WallGroup("Surprise01Walls") + gvar42 = ns.WallGroup("Surprise01DWalls") + gvar43 = ns.WallGroup("Surprise02Walls") + gvar44 = ns.WallGroup("Surprise02DestWalls") + gvar45 = ns.WallGroup("TreasureTrap01Walls") + gvar6 = ns.WallGroup("DryadWalls") + gvar34 = ns.ObjectGroup("Surprise00Triggers") + gvar33 = ns.ObjectGroup("Surprise00Creatures") + gvar35 = ns.ObjectGroup("Surprise01Creatures") + gvar36 = ns.ObjectGroup("Surprise01Triggers") + gvar32 = ns.ObjectGroup("MordwynTriggers") + gvar37 = ns.ObjectGroup("TreasureTrap01Zombies") + gvar38 = ns.ObjectGroup("Secret01Triggers") + wp46 = ns.Waypoint("TalkToPlayer") + wp47 = ns.Waypoint("MordwynHome") + wp48 = ns.Waypoint("MordwynBedroom") + wp5[0] = ns.Waypoint("DryadHome0") + wp5[1] = ns.Waypoint("DryadHome1") + wp7[0] = ns.Waypoint("DryadWarp0") + wp7[1] = ns.Waypoint("DryadWarp1") + wp7[2] = ns.Waypoint("DryadWarp2") + wp7[3] = ns.Waypoint("DryadWarp3") + wp7[4] = ns.Waypoint("DryadWarp4") + wp8[0] = ns.Waypoint("PlantLoc0") + wp8[1] = ns.Waypoint("PlantLoc1") + wp8[2] = ns.Waypoint("PlantLoc2") + wp8[3] = ns.Waypoint("PlantLoc3") + wp8[4] = ns.Waypoint("PlantLoc4") + wp8[5] = ns.Waypoint("PlantLoc5") + wp50 = ns.Waypoint("WellWP") + wp51 = ns.Waypoint("PlayerSounds") + ns.SetOwner(ns.GetHost(), obj20) + ns.UnBlind() + WispInitialize() + ns.StoryPic(obj20, "AirshipCaptainPic") + ns.StoryPic(obj19, "MordwynPic") + ns.SetDialog(obj19, ns.NORMAL, MordwynDialogStart, MordwynDialogEnd) + ns.StartupScreen(9) + ns.Music(0, 100) + ns.FrameTimer(5, StartCaptainConversation) + ns.ObjectOn(ns.Object("StayHere1")) + ns.Move(ns.Object("StayHere1"), ns.Waypoint("Here1")) + ns.ObjectOn(ns.Object("StayHere2")) + ns.Move(ns.Object("StayHere2"), ns.Waypoint("Here2")) + ns.ObjectOn(ns.Object("StayHere3")) + ns.Move(ns.Object("StayHere3"), ns.Waypoint("Here3")) + ns.ObjectOn(ns.Object("StayHere4")) + ns.Move(ns.Object("StayHere4"), ns.Waypoint("Here4")) + ns.ObjectOn(ns.Object("StayHere5")) + ns.Move(ns.Object("StayHere5"), ns.Waypoint("Here5")) +} +func MordwynGreet() { + ns.LookAtObject(obj19, ns.GetHost()) + ns.StartDialog(obj19, ns.GetHost()) + ns.SetCallback(obj19, 11, NullFunction) +} +func GetArmorOfJandor() { + ns.PauseObject(obj19, 75) + ns.SetCallback(obj19, 11, GiveArmorToPlayer) + ns.Move(obj19, wp47) +} +func GiveArmorToPlayer() { + ns.LookAtObject(obj19, ns.GetHost()) + ns.StartDialog(obj19, ns.GetHost()) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func CapTakeoff() { + if !(ns.IsCaller(ns.GetHost()) && flag53 == false) { + goto LABEL1 + } + flag53 = true + ns.Delete(obj21) + ns.Delete(obj22) + ns.Delete(obj20) +LABEL1: + return +} +func NullFunction() { +} +func MordwynMove() { + ns.ObjectGroupOff(gvar32) + ns.ObjectOn(obj19) + ns.SetOwner(ns.GetHost(), obj19) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.Move(obj19, wp46) +} +func AllowDialog() { + ns.CreatureGuard(obj19, ns.GetWaypointX(wp47), ns.GetWaypointY(wp47), ns.GetWaypointX(wp46), ns.GetWaypointY(wp46), 0) + ns.SetDialog(obj19, ns.NORMAL, MordwynDialogStart, MordwynDialogEnd) +} +func Surprise00() { + ns.ObjectGroupOff(gvar34) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar39) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar40) + ns.ObjectGroupOn(gvar33) + ns.GroupWander(gvar33) +} +func Surprise01() { + ns.ObjectGroupOff(gvar36) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar41) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar42) + ns.ObjectGroupOn(gvar35) +} +func Secret01Declare() { + ns.ObjectGroupOff(gvar38) + ns.MoveWaypoint(wp51, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp51) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func Secret02Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp51, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp51) + ns.GiveXp(ns.GetHost(), 100) +} +func EnablePitElev01() { + ns.ObjectOn(obj26) +} +func EnablePitElev02() { + ns.ObjectOn(obj27) +} +func EnablePitElev03() { + ns.ObjectOn(obj28) +} +func TriggerTreasureTrap() { + ns.WallGroupBreak(gvar45) + ns.ObjectOff(obj30) + ns.GroupAggressionLevel(gvar37, 0.83) + ns.GroupWander(gvar37) +} +func MapEntry() { + ns.NoWallSound(false) +} +func whichWisp(a1 ns.ObjectID) int { + var v0 int + v0 = 0 + for { + if !(v0 < ivar72) { + goto LABEL1 + } + if obj73[v0] != a1 { + goto LABEL2 + } + return v0 + LABEL2: + v0 += 1 + } +LABEL1: + return -1 + return 1 +} +func WispAction(a1 int) { + var ( + v0 float32 + v1 int + ) + v1 = gvar75[a1] + if v1 == gvar66 { + goto LABEL1 + } + if v1 == gvar68 { + goto LABEL2 + } + if v1 == gvar67 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Distance(ns.GetObjectX(obj73[a1]), ns.GetObjectY(obj73[a1]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v0 < 70) { + goto LABEL5 + } + gvar75[a1] = gvar67 + ns.Move(obj73[a1], wp74[a1]) +LABEL5: + goto LABEL4 +LABEL2: + ns.LookAtObject(obj73[a1], ns.GetHost()) + ivar76[a1] += 1 + if !(ivar76[a1] > 4) { + goto LABEL6 + } + gvar75[a1] = gvar66 + ns.CreatureFollow(obj73[a1], ns.GetHost()) +LABEL6: + goto LABEL4 +LABEL3: + v0 = ns.Distance(ns.GetObjectX(obj73[a1]), ns.GetObjectY(obj73[a1]), ns.GetWaypointX(wp74[a1]), ns.GetWaypointY(wp74[a1])) + if !(v0 < 30) { + goto LABEL7 + } + gvar75[a1] = gvar69 + ns.CreatureIdle(obj73[a1]) + return +LABEL7: + goto LABEL4 +LABEL4: + ns.FrameTimerWithArg(ivar71, a1, WispAction) +} +func WispRecognize() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar75[v0] + if v1 == gvar65 { + goto LABEL3 + } + if v1 == gvar68 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + gvar75[v0] = gvar66 + ns.CreatureFollow(ns.GetTrigger(), ns.GetCaller()) + gvar77[v0] = ns.FrameTimerWithArg(ivar71, v0, WispAction) + goto LABEL5 +LABEL4: + gvar75[v0] = gvar67 + ns.Move(ns.GetTrigger(), wp74[v0]) + goto LABEL5 +LABEL5: + return +} +func WispLoseSight() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar75[v0] + if v1 == gvar67 { + goto LABEL3 + } + goto LABEL4 +LABEL3: + gvar75[v0] = gvar68 + ivar76[v0] = 0 + ns.CreatureIdle(ns.GetTrigger()) + goto LABEL4 +LABEL4: + return +} +func WispGetMad() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) + v0 = whichWisp(ns.GetTrigger()) + if !(v0 >= 0) { + goto LABEL1 + } + gvar75[v0] = gvar70 + ns.CancelTimer(gvar77[v0]) +LABEL1: + return +} +func WispMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp50) +} +func PlayMordwyn() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(21, 100) +LABEL1: + return +} +func PlayOgre() { + ns.Music(7, 100) +} +func PlayCaves() { + ns.Music(18, 100) +} +func PlayWasteland() { + ns.Music(19, 100) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con09a/dummy_test.go b/examples/con09a/dummy_test.go new file mode 100644 index 0000000..dd24668 --- /dev/null +++ b/examples/con09a/dummy_test.go @@ -0,0 +1,6 @@ +package con09a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con09b/con09b.go b/examples/con09b/con09b.go new file mode 100644 index 0000000..a639c6e --- /dev/null +++ b/examples/con09b/con09b.go @@ -0,0 +1,805 @@ +package con09b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + gvar26 ns.ObjectGroupID + gvar27 ns.ObjectGroupID + gvar28 ns.ObjectGroupID + gvar29 ns.ObjectGroupID + gvar30 ns.ObjectGroupID + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + gvar34 ns.ObjectGroupID + gvar35 ns.ObjectGroupID + gvar36 ns.ObjectGroupID + gvar37 ns.ObjectGroupID + gvar38 ns.WallGroupID + gvar39 ns.WallGroupID + gvar40 ns.WallGroupID + gvar41 ns.WallGroupID + gvar42 ns.WallGroupID + gvar43 ns.WallGroupID + wp44 ns.WaypointID + wp45 ns.WaypointID + wp46 [9]ns.WaypointID + wp47 [3]ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + flag54 bool + gvar55 int + gvar56 int + gvar57 int + gvar58 int + gvar59 int + obj60 [9]ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + gvar63 int + flag64 bool + flag65 bool + flag66 bool + flag67 bool + flag68 bool + gvar69 int + gvar70 int + gvar71 int + gvar72 int + gvar73 int + gvar74 int + ivar75 int + ivar76 int + obj77 [8]ns.ObjectID + wp78 [8]ns.WaypointID + gvar79 [8]int + ivar80 [8]int + gvar81 [8]ns.TimerID +) + +func init() { + flag54 = false + gvar55 = 0 + gvar56 = 1 + gvar57 = 2 + gvar58 = 3 + gvar59 = 4 + gvar63 = gvar55 + flag64 = false + flag65 = false + flag66 = false + flag67 = false + flag68 = false + gvar69 = 0 + gvar70 = 1 + gvar71 = 2 + gvar72 = 3 + gvar73 = 4 + gvar74 = 5 + ivar75 = 15 + ivar76 = 2 +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func AidanDialogStart() { + var v0 int + v0 = gvar63 + if v0 == gvar55 { + goto LABEL1 + } + if v0 == gvar56 { + goto LABEL2 + } + if v0 == gvar57 { + goto LABEL3 + } + if v0 == gvar58 { + goto LABEL4 + } + if v0 == gvar59 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.DestroyChat(obj4) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanGreet1") + flag54 = true + goto LABEL6 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanGreet2") + goto LABEL6 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanWaiting") + goto LABEL6 +LABEL4: + ns.DestroyChat(obj4) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanThankful") + goto LABEL6 +LABEL5: + ns.DestroyChat(obj4) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanLeaving") + goto LABEL6 +LABEL6: + return +} +func AidanDialogEnd() { + var v0 int + v0 = gvar63 + if v0 == gvar55 { + goto LABEL1 + } + if v0 == gvar56 { + goto LABEL2 + } + if v0 == gvar57 { + goto LABEL3 + } + if v0 == gvar58 { + goto LABEL4 + } + if v0 == gvar59 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + gvar63 = gvar56 + goto LABEL6 +LABEL2: + gvar63 = gvar57 + goto LABEL6 +LABEL3: + goto LABEL6 +LABEL4: + flag54 = true + flag66 = true + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.CancelDialog(obj4) + ns.GiveXp(ns.GetHost(), 1000) + ns.Pickup(ns.GetHost(), obj5) + ns.PrintToAll("GeneralPrint:FindSpell") + ns.CreatureFollow(obj4, ns.GetHost()) + ns.AggressionLevel(obj4, 0.5) + ns.BecomePet(obj4) + ns.SetOwner(ns.GetHost(), obj4) + goto LABEL6 +LABEL5: + goto LABEL6 +LABEL6: + return +} +func WispInitialize() { + obj77[0] = ns.Object("Wisp2") + gvar79[0] = gvar69 + wp78[0] = ns.Waypoint("Wisp2Dest") + obj77[1] = ns.Object("Wisp3") + gvar79[1] = gvar69 + wp78[1] = ns.Waypoint("Wisp3Dest") +} +func MapInitialize() { + obj4 = ns.Object("Aidan") + obj5 = ns.Object("SlowBook") + obj6 = ns.Object("DeadPrisoner") + obj7 = ns.Object("Mystic_Brotherhood") + obj8 = ns.Object("OgreCageDoor01") + obj9 = ns.Object("CheckRescueTrigger") + obj10 = ns.Object("PitElev02") + obj11 = ns.Object("PitElev03") + obj12 = ns.Object("CryptTrigger01") + obj13 = ns.Object("CryptEnd1") + obj14 = ns.Object("CryptDoor3") + obj15 = ns.Object("CryptDoor4") + obj16 = ns.Object("CryptGuardian") + obj17 = ns.Object("CryptWarrior") + obj18 = ns.Object("UrchinCageDoor") + obj19 = ns.Object("UrchinShaman") + obj20 = ns.Object("Urchin1") + obj21 = ns.Object("Urchin2") + obj22 = ns.Object("Urchin3") + obj23 = ns.Object("Urchin4") + obj24 = ns.Object("Necromancer") + obj25 = ns.Object("OgreDude") + gvar38 = ns.WallGroup("Surprise02Walls") + gvar39 = ns.WallGroup("Surprise02DestWalls") + gvar40 = ns.WallGroup("GraveyardTrapWalls") + gvar41 = ns.WallGroup("GraveyardTrapWalls2") + gvar42 = ns.WallGroup("CryptWall01") + gvar43 = ns.WallGroup("SubGraveyardWalls") + gvar26 = ns.ObjectGroup("GraveyardTrapEnemies") + gvar27 = ns.ObjectGroup("TriggerGroup01") + gvar28 = ns.ObjectGroup("TriggerGroup02") + gvar29 = ns.ObjectGroup("SubGraveyardTriggers") + gvar30 = ns.ObjectGroup("SubGraveyardCreatures") + gvar31 = ns.ObjectGroup("CryptGuardianTriggers") + gvar32 = ns.ObjectGroup("CryptWarriorTriggers") + gvar33 = ns.ObjectGroup("UrchinPrisoners") + gvar34 = ns.ObjectGroup("Secret03Enemies") + gvar35 = ns.ObjectGroup("Secret03Triggers") + gvar36 = ns.ObjectGroup("Secret04Triggers") + gvar37 = ns.ObjectGroup("Secret06Triggers") + wp46[0] = ns.Waypoint("CreateWP1") + wp46[1] = ns.Waypoint("CreateWP2") + wp46[2] = ns.Waypoint("CreateWP3") + wp46[3] = ns.Waypoint("CreateWP4") + wp46[4] = ns.Waypoint("CreateWP5") + wp46[5] = ns.Waypoint("CreateWP6") + wp46[6] = ns.Waypoint("CreateWP7") + wp46[7] = ns.Waypoint("CreateWP8") + wp46[8] = ns.Waypoint("CreateWP9") + wp44 = ns.Waypoint("VileZombieCreateWP01") + wp45 = ns.Waypoint("GhostCreateWP01") + wp50 = ns.Waypoint("FaceHereWP") + wp47[0] = ns.Waypoint("TeleWP1") + wp47[1] = ns.Waypoint("TeleWP2") + wp47[2] = ns.Waypoint("TeleWP3") + wp48 = ns.Waypoint("CryptGuardianEntrance") + wp49 = ns.Waypoint("CryptWarriorEntrance") + wp51 = ns.Waypoint("AidanWait") + wp52 = ns.Waypoint("AidanLook") + wp53 = ns.Waypoint("PlayerSounds") + ns.LockDoor(obj18) + ns.UnBlind() + WispInitialize() + ns.StoryPic(obj4, "AidanPic") + ns.SetDialog(obj4, ns.NORMAL, AidanDialogStart, AidanDialogEnd) + ns.SetOwner(obj25, obj4) + ns.Damage(obj6, 0, 50, 8) +} +func AidanRescued() { + ns.ObjectOff(obj9) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + gvar63 = gvar58 + ns.StartDialog(obj4, ns.GetHost()) +} +func PlayOgre() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(7, 100) +LABEL1: + return +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func AidanNearPlayer() { + if !(flag54 == false && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + ns.Chat(obj4, "War09a:AidanPlea") + if flag67 { + goto LABEL1 + } + ns.ClearOwner(obj4) + ns.SetOwner(ns.GetHost(), obj4) + flag67 = true +LABEL1: + return +} +func CheckRescue() { + if ns.IsLocked(obj8) { + goto LABEL1 + } + if !(ns.CurrentHealth(obj4) > 0) { + goto LABEL1 + } + AidanRescued() +LABEL1: + return +} +func AidanMustGo() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + PlayOgre() +LABEL1: + if !(ns.IsCaller(ns.GetHost()) && flag64 == false) { + goto LABEL2 + } + flag64 = true + ns.GiveXp(ns.GetHost(), 500) + ns.JournalEdit(ns.GetHost(), "FindOutpost", 4) + ns.JournalEntry(ns.GetHost(), "FindLOTD", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL2: + if !(ns.IsCaller(ns.GetHost()) && flag66 == true && ns.CurrentHealth(obj4) > 0 && flag68 == false) { + goto LABEL3 + } + flag68 = true + ns.RestoreHealth(obj4, 120) + ns.SetDialog(obj4, ns.NORMAL, AidanDialogStart, AidanDialogEnd) + gvar63 = gvar59 + ns.CreatureGuard(obj4, ns.GetWaypointX(wp51), ns.GetWaypointY(wp51), ns.GetWaypointX(wp52), ns.GetWaypointY(wp52), 0) + ns.BecomeEnemy(obj4) + ns.SetOwner(ns.GetHost(), obj4) +LABEL3: + return +} +func DestroyAidan() { + if !flag68 { + goto LABEL1 + } + ns.Delete(obj4) +LABEL1: + return +} +func Secret03Declare() { + ns.ObjectGroupOff(gvar35) + ns.ObjectGroupOn(gvar34) + ns.MoveWaypoint(wp53, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp53) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 5) +} +func Secret04Declare() { + ns.ObjectGroupOff(gvar36) + ns.MoveWaypoint(wp53, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp53) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +} +func Secret05Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp53, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp53) + ns.GiveXp(ns.GetHost(), 100) +} +func Secret06Declare() { + ns.ObjectGroupOff(gvar37) + ns.MoveWaypoint(wp53, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp53) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func EnablePitElev02() { + ns.ObjectOn(obj10) +} +func EnablePitElev03() { + ns.ObjectOn(obj11) +} +func GraveyardCreateOrders() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + ) + v0 = ns.GetWaypointX(wp44) + v1 = ns.GetWaypointY(wp44) + v2 = ns.GetWaypointX(wp45) + v3 = ns.GetWaypointY(wp45) + v4 = ns.GetWaypointX(wp50) + v5 = ns.GetWaypointY(wp50) + ns.LookWithAngle(obj61, 224) + ns.LookWithAngle(obj62, 192) + ns.CreatureGuard(obj61, v0, v1, v4, v5, 500) + ns.CreatureGuard(obj62, v2, v3, v4, v5, 500) +} +func GraveyardTrapTrigger() { + ns.ObjectGroupOff(gvar27) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar40) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar41) + ns.ObjectGroupOn(gvar26) + obj61 = ns.CreateObject("VileZombie", wp44) + obj62 = ns.CreateObject("Ghost", wp45) + ns.FrameTimer(1, GraveyardCreateOrders) +} +func SubGraveSurprise() { + ns.ObjectGroupOff(gvar29) + ns.ObjectGroupOn(gvar30) + ns.WallGroupBreak(gvar43) +} +func CryptGuardian() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp48) + v1 = ns.GetWaypointY(wp48) + ns.ObjectGroupOff(gvar31) + ns.LockDoor(obj14) + ns.LockDoor(obj15) + ns.ObjectOn(obj16) + ns.Enchant(obj16, ns.ENCHANT_INVISIBLE, 2) + ns.MoveObject(obj16, v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func TurnInvisible() { + ns.Enchant(obj16, ns.ENCHANT_INVISIBLE, 1.5) +} +func UnlockCryptDoors2() { + ns.UnlockDoor(obj14) + ns.UnlockDoor(obj15) +} +func CreatureOrders() { + var v0 int + v0 = 0 + for { + if !(v0 < 9) { + goto LABEL1 + } + ns.SetRoamFlag(obj60[v0], 1) + ns.Wander(obj60[v0]) + ns.AggressionLevel(obj60[v0], 0.83) + v0 += 1 + } +LABEL1: + return +} +func CreateZombies01() { + var v0 int + ns.ObjectGroupOff(gvar28) + ns.ObjectOn(obj24) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar38) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar39) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + obj60[v0] = ns.CreateObject("Zombie", wp46[v0]) + v0 += 1 + } +LABEL1: + v0 = 5 + for { + if !(v0 < 7) { + goto LABEL3 + } + obj60[v0] = ns.CreateObject("Ghost", wp46[v0]) + v0 += 1 + } +LABEL3: + v0 = 7 + for { + if !(v0 < 9) { + goto LABEL5 + } + obj60[v0] = ns.CreateObject("VileZombie", wp46[v0]) + v0 += 1 + } +LABEL5: + ns.FrameTimer(1, CreatureOrders) +} +func NecroTeleport() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 2) + v0 = ns.GetWaypointX(wp47[v2]) + v1 = ns.GetWaypointY(wp47[v2]) + if !ns.IsCaller(obj24) { + goto LABEL1 + } + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(obj24, v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +LABEL1: + return +} +func NecroTeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 2) + v0 = ns.GetWaypointX(wp47[v2]) + v1 = ns.GetWaypointY(wp47[v2]) + ns.PauseObject(ns.GetTrigger(), 15) + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func FreeUrchins01() { + ns.UnlockDoor(obj18) + if flag65 { + goto LABEL1 + } + flag65 = true + ns.SetOwner(ns.GetHost(), obj20) + ns.SetOwner(ns.GetHost(), obj21) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj23) + ns.SetOwner(ns.GetHost(), obj19) + ns.SetRoamFlag(obj19, 1) + ns.SetRoamFlag(obj20, 1) + ns.SetRoamFlag(obj21, 1) + ns.SetRoamFlag(obj22, 1) + ns.SetRoamFlag(obj23, 1) + ns.AggressionLevel(obj19, 0.83) + ns.AggressionLevel(obj20, 0.83) + ns.AggressionLevel(obj21, 0.83) + ns.AggressionLevel(obj22, 0.83) + ns.AggressionLevel(obj23, 0.83) +LABEL1: + return +} +func LockUrchinCage() { + ns.LockDoor(obj18) +} +func HurtUrchins01() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.RunAway(ns.GetTrigger(), ns.GetCaller(), 120) +LABEL1: + return +} +func MapEntry() { + ns.NoWallSound(false) +} +func whichWisp(a1 ns.ObjectID) int { + var v0 int + v0 = 0 + for { + if !(v0 < ivar76) { + goto LABEL1 + } + if obj77[v0] != a1 { + goto LABEL2 + } + return v0 + LABEL2: + v0 += 1 + } +LABEL1: + return -1 + return 1 +} +func WispAction(a1 int) { + var ( + v0 float32 + v1 int + ) + v1 = gvar79[a1] + if v1 == gvar70 { + goto LABEL1 + } + if v1 == gvar72 { + goto LABEL2 + } + if v1 == gvar71 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Distance(ns.GetObjectX(obj77[a1]), ns.GetObjectY(obj77[a1]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v0 < 70) { + goto LABEL5 + } + gvar79[a1] = gvar71 + ns.Move(obj77[a1], wp78[a1]) +LABEL5: + goto LABEL4 +LABEL2: + ns.LookAtObject(obj77[a1], ns.GetHost()) + ivar80[a1] += 1 + if !(ivar80[a1] > 4) { + goto LABEL6 + } + gvar79[a1] = gvar70 + ns.CreatureFollow(obj77[a1], ns.GetHost()) +LABEL6: + goto LABEL4 +LABEL3: + v0 = ns.Distance(ns.GetObjectX(obj77[a1]), ns.GetObjectY(obj77[a1]), ns.GetWaypointX(wp78[a1]), ns.GetWaypointY(wp78[a1])) + if !(v0 < 30) { + goto LABEL7 + } + gvar79[a1] = gvar73 + ns.CreatureIdle(obj77[a1]) + return +LABEL7: + goto LABEL4 +LABEL4: + ns.FrameTimerWithArg(ivar75, a1, WispAction) +} +func WispRecognize() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar79[v0] + if v1 == gvar69 { + goto LABEL3 + } + if v1 == gvar72 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + gvar79[v0] = gvar70 + ns.CreatureFollow(ns.GetTrigger(), ns.GetCaller()) + gvar81[v0] = ns.FrameTimerWithArg(ivar75, v0, WispAction) + goto LABEL5 +LABEL4: + gvar79[v0] = gvar71 + ns.Move(ns.GetTrigger(), wp78[v0]) + goto LABEL5 +LABEL5: + return +} +func WispLoseSight() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar79[v0] + if v1 == gvar71 { + goto LABEL3 + } + goto LABEL4 +LABEL3: + gvar79[v0] = gvar72 + ivar80[v0] = 0 + ns.CreatureIdle(ns.GetTrigger()) + goto LABEL4 +LABEL4: + return +} +func WispGetMad() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) + v0 = whichWisp(ns.GetTrigger()) + if !(v0 >= 0) { + goto LABEL1 + } + gvar79[v0] = gvar74 + ns.CancelTimer(gvar81[v0]) +LABEL1: + return +} +func WispMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func PlaySwamp() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(29, 100) +LABEL1: + return +} +func PlaySwamp2() { + ns.Music(29, 100) +} +func PlayAction() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(26, 100) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con09b/dummy_test.go b/examples/con09b/dummy_test.go new file mode 100644 index 0000000..69e33b5 --- /dev/null +++ b/examples/con09b/dummy_test.go @@ -0,0 +1,6 @@ +package con09b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con09c/con09c.go b/examples/con09c/con09c.go new file mode 100644 index 0000000..75cfef0 --- /dev/null +++ b/examples/con09c/con09c.go @@ -0,0 +1,583 @@ +package con09c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + gvar55 ns.ObjectGroupID + gvar56 ns.ObjectGroupID + gvar57 ns.ObjectGroupID + gvar58 ns.ObjectGroupID + gvar59 ns.ObjectGroupID + gvar60 ns.ObjectGroupID + gvar61 ns.ObjectGroupID + gvar62 ns.ObjectGroupID + gvar63 ns.ObjectGroupID + gvar64 ns.ObjectGroupID + gvar65 ns.ObjectGroupID + gvar66 [6]ns.ObjectGroupID + gvar67 ns.ObjectGroupID + gvar68 ns.ObjectGroupID + gvar69 ns.WallGroupID + gvar70 ns.WallGroupID + gvar71 ns.WallGroupID + gvar72 ns.WallGroupID + gvar73 ns.WallGroupID + gvar74 ns.WallGroupID + wp75 ns.WaypointID + wp76 ns.WaypointID + wp77 ns.WaypointID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + wp90 ns.WaypointID + wp91 ns.WaypointID + wp92 ns.WaypointID + wp93 ns.WaypointID + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + wp97 ns.WaypointID + flag98 bool + flag99 bool + flag100 bool + flag101 bool + ivar102 int + ivar103 int + gvar104 int + gvar105 int + ivar106 int + obj107 ns.ObjectID +) + +func init() { + flag99 = true + flag100 = false + flag101 = false + ivar102 = 22 + ivar103 = ivar102 + ivar106 = 0 + flag98 = true +} +func ToggleSpikes1() { + ns.ObjectGroupToggle(gvar61) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP01")) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP06")) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP09")) + ns.FrameTimer(60, ToggleSpikes2) +} +func ToggleSpikes2() { + ns.ObjectGroupToggle(gvar62) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP04")) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP07")) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP12")) + ns.FrameTimer(60, ToggleSpikes1) +} +func GoToPost() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp94) + v1 = ns.GetWaypointY(wp94) + v2 = ns.GetWaypointX(wp95) + v3 = ns.GetWaypointY(wp95) + ns.CreatureGuard(obj28, v0, v1, v2, v3, 100) +} +func SwitchSpikeState() { + ns.ObjectGroupOff(gvar66[ivar106]) + if !flag99 { + goto LABEL1 + } + ivar106 += 1 + if !(ivar106 > 5) { + goto LABEL2 + } + ivar106 = 0 +LABEL2: + ns.ObjectGroupOn(gvar66[ivar106]) + ns.AudioEvent(ns.FloorSpikesUp, wp97) + ns.FrameTimer(30, SwitchSpikeState) + goto LABEL3 +LABEL1: + return +LABEL3: + return +} +func CloseWalls() { + ns.MusicPopEvent() + ns.WallGroupClose(gvar69) + ns.WallGroupClose(gvar70) +} +func BeginPolling() { + if flag100 { + goto LABEL1 + } + if flag101 { + goto LABEL2 + } + if !(ns.CurrentHealth(obj21) <= 0 || !ns.IsAttackedBy(obj21, ns.GetHost())) { + goto LABEL3 + } + flag101 = true + ns.WallGroupOpen(gvar70) + ns.ObjectOn(obj22) + ns.Wander(obj22) +LABEL3: + goto LABEL4 +LABEL2: + if !(ns.CurrentHealth(obj22) <= 0 || !ns.IsAttackedBy(obj22, ns.GetHost())) { + goto LABEL4 + } + flag100 = true + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp90), ns.GetWaypointY(wp90), 0, 0) + ns.AudioEvent(ns.KeyDrop, wp90) + ns.MoveObject(obj19, ns.GetWaypointX(wp90), ns.GetWaypointY(wp90)) + ns.ObjectOn(obj20) + ns.Move(obj9, wp88) + ns.Move(obj10, wp89) + ns.Move(obj7, wp78) + ns.Move(obj8, wp79) + ns.FrameTimer(45, CloseWalls) +LABEL4: + ns.FrameTimer(45, BeginPolling) +LABEL1: + return +} +func PlayAction() { + ns.MusicPushEvent() + ns.Music(26, 100) +} +func PlayCaves() { + ns.Music(18, 100) +} +func MapEntry() { + PlayCaves() + ns.NoWallSound(false) +} +func Secret01Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 500) +} +func Secret01Exit() { + ns.WallGroupOpen(gvar71) +} +func Secret02Declare() { + ns.ObjectGroupOff(gvar68) + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 250) +} +func Secret03Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 50) +} +func Secret04Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 100) +} +func SpikeTimerAudioLoop() { + if flag98 { + goto LABEL1 + } + ns.AudioEvent(ns.Gear1, wp75) + ns.FrameTimer(ivar103, SpikeTimerAudioLoop) + ivar103 -= 1 + goto LABEL2 +LABEL1: + ns.AudioEvent(ns.TriggerPressed, wp75) +LABEL2: + return +} +func ResetOgreSpikeDoor01() { + ns.ObjectOn(obj4) + ns.ObjectOn(obj5) + ns.ObjectGroupOn(gvar55) + ns.LockDoor(obj6) + flag98 = true + ivar103 = ivar102 +} +func ToggleOgreTrapSpikes01() { + ns.ObjectOff(obj4) + ns.ObjectOff(obj5) + ns.ObjectGroupOff(gvar55) + if !flag98 { + goto LABEL1 + } + ns.UnlockDoor(obj6) + flag98 = false + SpikeTimerAudioLoop() + ns.FrameTimer(150, ResetOgreSpikeDoor01) + goto LABEL2 +LABEL1: + ns.LockDoor(obj6) + flag98 = true +LABEL2: + return +} +func MoveBlocks01() { + ns.ObjectGroupOff(gvar57) + ns.ObjectGroupOff(gvar58) + PlayAction() + ns.Move(obj7, wp76) + ns.Move(obj8, wp77) + ns.Move(obj9, wp78) + ns.Move(obj10, wp79) + ns.Move(obj11, wp80) + ns.Move(obj12, wp81) + ns.Move(obj13, wp82) + ns.Move(obj14, wp83) + ns.Move(obj15, wp84) + ns.Move(obj16, wp85) + ns.Move(obj17, wp86) + ns.Move(obj18, wp87) + ns.WallGroupOpen(gvar69) + ns.ObjectOn(obj21) + ns.Wander(obj21) + ns.FrameTimer(45, BeginPolling) +} +func OpenWayOut() { + ns.WallGroupOpen(gvar74) +} +func GetBuddy() { + ns.RetreatLevel(obj23, 0) + ns.Move(obj23, wp91) +} +func FollowOgrePatrol01() { + if !ns.IsCaller(obj23) { + goto LABEL1 + } + ns.CreatureFollow(ns.GetTrigger(), obj23) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.Walk(obj23, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL1: + return +} +func WaitASec() { + ns.PauseObject(ns.GetTrigger(), 30) +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func SpikeHall() { + ns.ObjectGroupOff(gvar59) + ns.ObjectGroupOn(gvar60) + ToggleSpikes1() +} +func PressButton() { + ns.AudioEvent(ns.GruntRecognize, wp93) + ns.Move(obj28, wp92) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.AggressionLevel(obj31, 0.83) + ns.FrameTimer(60, GoToPost) +} +func OgrePressButton() { + ns.FrameTimer(10, PressButton) +} +func LockCageDoor() { + if ns.IsLocked(obj32) { + goto LABEL1 + } + ns.LockDoor(obj32) + goto LABEL2 +LABEL1: + ns.UnlockDoor(obj32) +LABEL2: + return +} +func FoundTreasureTrove() { + ns.PrintToAll("War09c:FoundTrove") + ns.GiveXp(ns.GetHost(), 1000) +} +func ToggleElevatorGroup3() { + ns.ObjectGroupToggle(gvar65) +} +func ToggleElevatorGroup1() { + ns.ObjectGroupToggle(gvar63) +} +func StartSpikes() { + ns.ObjectGroupOff(gvar67) + ns.LockDoor(obj33) + ns.FrameTimer(60, SwitchSpikeState) +} +func UnlockSpikeSegRoomDoor() { + ns.UnlockDoor(obj33) + flag99 = false +} +func CallSpitter1() { + ns.Wander(obj35) +} +func SetSpitter1PathColor() { + ns.SetRoamFlag(obj35, 1|128) +} +func LockPitDoor() { + ns.LockDoor(obj34) +} +func UnlockPitDoor() { + ns.UnlockDoor(obj34) +} +func ReleaseA() { + ns.UnlockDoor(obj36) + ns.UnlockDoor(obj37) + ns.CreatureHunt(obj48) +} +func ReleaseB() { + ns.UnlockDoor(obj38) + ns.UnlockDoor(obj39) + ns.CreatureHunt(obj49) +} +func ReleaseC() { + ns.UnlockDoor(obj40) + ns.UnlockDoor(obj41) + ns.CreatureHunt(obj50) +} +func ReleaseD() { + ns.UnlockDoor(obj42) + ns.UnlockDoor(obj43) + ns.CreatureHunt(obj51) +} +func ReleaseE() { + ns.UnlockDoor(obj44) + ns.UnlockDoor(obj45) + ns.CreatureHunt(obj52) +} +func ReleaseF() { + ns.UnlockDoor(obj46) + ns.UnlockDoor(obj47) + ns.CreatureHunt(obj53) +} +func ToggleElevatorGroup2() { + ns.ObjectOff(obj54) + ns.ObjectGroupToggle(gvar64) + ns.GiveXp(ns.GetHost(), 2500) +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func MapInitialize() { + obj6 = ns.Object("OgreSpikeDoor01") + obj4 = ns.Object("OgreTrapSpikePlate01") + obj5 = ns.Object("OgreTrapSpikeSwitch01") + obj7 = ns.Object("Block01") + obj8 = ns.Object("Block02") + obj9 = ns.Object("Block03") + obj10 = ns.Object("Block04") + obj11 = ns.Object("Block05") + obj12 = ns.Object("Block06") + obj13 = ns.Object("Block07") + obj14 = ns.Object("Block08") + obj15 = ns.Object("Block09") + obj16 = ns.Object("Block10") + obj17 = ns.Object("Block11") + obj18 = ns.Object("Block12") + obj19 = ns.Object("SilverKey") + obj20 = ns.Object("SilverKeyLight") + obj21 = ns.Object("OgreFighter01") + obj22 = ns.Object("OgreFighter02") + obj23 = ns.Object("OgrePatrol01") + obj24 = ns.Object("OgrePatrol02") + obj25 = ns.Object("OgrePatrol03") + obj26 = ns.Object("OgrePatrolBuddy01") + obj27 = ns.Object("OgrePatrolBuddy02") + obj28 = ns.Object("ButtonPresser") + obj29 = ns.Object("OgrePsycho01") + obj30 = ns.Object("OgrePsycho02") + obj31 = ns.Object("OgrePsycho03") + obj32 = ns.Object("CageDoor") + obj33 = ns.Object("SpikeSegRoomDoor") + obj34 = ns.Object("CrumblingPitDoor") + obj36 = ns.Object("CreaturePitDoorA1") + obj37 = ns.Object("CreaturePitDoorA2") + obj38 = ns.Object("CreaturePitDoorB1") + obj39 = ns.Object("CreaturePitDoorB2") + obj40 = ns.Object("CreaturePitDoorC1") + obj41 = ns.Object("CreaturePitDoorC2") + obj42 = ns.Object("CreaturePitDoorD1") + obj43 = ns.Object("CreaturePitDoorD2") + obj44 = ns.Object("CreaturePitDoorE1") + obj45 = ns.Object("CreaturePitDoorE2") + obj46 = ns.Object("CreaturePitDoorF1") + obj47 = ns.Object("CreaturePitDoorF2") + obj48 = ns.Object("CreatureA") + obj49 = ns.Object("CreatureB") + obj50 = ns.Object("CreatureC") + obj51 = ns.Object("CreatureD") + obj52 = ns.Object("CreatureE") + obj53 = ns.Object("CreatureF") + obj107 = ns.Object("CreaturePitElev") + obj54 = ns.Object("CreaturePitSwitch") + gvar55 = ns.ObjectGroup("OgreTrapSpikes01") + gvar57 = ns.ObjectGroup("BlockTrigger01") + gvar56 = ns.ObjectGroup("BlockMoverGroup01") + gvar58 = ns.ObjectGroup("SecretLight01") + gvar59 = ns.ObjectGroup("SpikeHallTriggers") + gvar60 = ns.ObjectGroup("SpikeMoverGroup") + gvar61 = ns.ObjectGroup("HallSpikes1") + gvar62 = ns.ObjectGroup("HallSpikes2") + gvar66[0] = ns.ObjectGroup("SpikeSeg01") + gvar66[1] = ns.ObjectGroup("SpikeSeg02") + gvar66[2] = ns.ObjectGroup("SpikeSeg03") + gvar66[3] = ns.ObjectGroup("SpikeSeg04") + gvar66[4] = ns.ObjectGroup("SpikeSeg05") + gvar66[5] = ns.ObjectGroup("SpikeSeg06") + gvar67 = ns.ObjectGroup("SpikeSegTriggers") + gvar68 = ns.ObjectGroup("Secret02Triggers") + gvar63 = ns.ObjectGroup("ElevatorGroup1") + gvar64 = ns.ObjectGroup("ElevatorGroup2") + gvar65 = ns.ObjectGroup("ElevatorGroup3") + gvar69 = ns.WallGroup("SecretWallGroup01") + gvar70 = ns.WallGroup("SecretWallGroup02") + gvar71 = ns.WallGroup("Secret01Wall") + gvar72 = ns.WallGroup("SecretHallWalls01") + gvar73 = ns.WallGroup("CreaturePitWalls") + gvar74 = ns.WallGroup("WayOut") + wp75 = ns.Waypoint("SpikeTimerAudioOrigin") + wp76 = ns.Waypoint("BlockWP01") + wp77 = ns.Waypoint("BlockWP02") + wp78 = ns.Waypoint("BlockWP03") + wp79 = ns.Waypoint("BlockWP04") + wp80 = ns.Waypoint("BlockWP05") + wp81 = ns.Waypoint("BlockWP06") + wp82 = ns.Waypoint("BlockWP07") + wp83 = ns.Waypoint("BlockWP08") + wp84 = ns.Waypoint("BlockWP09") + wp85 = ns.Waypoint("BlockWP10") + wp86 = ns.Waypoint("BlockWP11") + wp87 = ns.Waypoint("BlockWP12") + wp88 = ns.Waypoint("BlockWP13") + wp89 = ns.Waypoint("BlockWP14") + wp90 = ns.Waypoint("SilverKeySpot") + wp91 = ns.Waypoint("BuddyWP") + wp92 = ns.Waypoint("ButtonLocationWP") + wp93 = ns.Waypoint("OgreAudioOrigin") + wp94 = ns.Waypoint("PostWP") + wp95 = ns.Waypoint("FacingWP") + wp96 = ns.Waypoint("PlayerSounds") + wp97 = ns.Waypoint("RoomSounds") + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.LockDoor(obj38) + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.LockDoor(obj41) + ns.LockDoor(obj42) + ns.LockDoor(obj43) + ns.LockDoor(obj44) + ns.LockDoor(obj45) + ns.LockDoor(obj46) + ns.LockDoor(obj47) + ns.UnBlind() +} +func OnEvent(typ string) { + switch typ { + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con09c/dummy_test.go b/examples/con09c/dummy_test.go new file mode 100644 index 0000000..1641a99 --- /dev/null +++ b/examples/con09c/dummy_test.go @@ -0,0 +1,6 @@ +package con09c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con09d/con09d.go b/examples/con09d/con09d.go new file mode 100644 index 0000000..061bb07 --- /dev/null +++ b/examples/con09d/con09d.go @@ -0,0 +1,859 @@ +package con09d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + gvar21 ns.ObjectGroupID + gvar22 ns.ObjectGroupID + gvar23 ns.ObjectGroupID + gvar24 ns.ObjectGroupID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.WallGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 [5]ns.WaypointID + wp42 [5]ns.WaypointID + wp43 ns.WaypointID + gvar44 ns.WaypointGroupID + gvar45 int + gvar46 int + gvar47 int + gvar48 int + gvar49 int + obj50 ns.ObjectID + obj51 ns.ObjectID + ivar52 int + gvar53 int + gvar54 int + fvar55 float32 + fvar56 float32 + flag57 bool + flag58 bool + flag59 bool + flag60 bool + flag61 bool + flag62 bool + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + flag68 bool + flag69 bool + flag70 bool + flag71 bool + flag72 bool + flag73 bool +) + +func init() { + gvar45 = 0 + gvar46 = 1 + gvar47 = 2 + gvar48 = 3 + gvar49 = 4 + ivar52 = 1000 + gvar53 = gvar45 + gvar54 = gvar48 + flag57 = false + flag58 = false + flag59 = false + flag60 = false + flag61 = false + flag62 = false + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + flag68 = false + flag69 = false + flag70 = false + flag71 = false + flag72 = false + flag73 = false +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func MapInitialize() { + obj4 = ns.Object("LoneWolf01") + obj5 = ns.Object("Skel01a") + obj6 = ns.Object("Skel02a") + obj7 = ns.Object("Skel03a") + obj8 = ns.Object("SquadLeader") + obj9 = ns.Object("Cain") + obj10 = ns.Object("Cain2") + obj11 = ns.Object("CainWolf01") + obj12 = ns.Object("CainWolf02") + obj13 = ns.Object("CainWolf03") + obj14 = ns.Object("Necromancer1") + obj15 = ns.Object("Necromancer2") + obj16 = ns.Object("Necromancer") + obj17 = ns.Object("NecroStart") + obj18 = ns.Object("Lich") + obj19 = ns.Object("KeepOutTrigger") + obj20 = ns.Object("TreasureLight") + gvar21 = ns.ObjectGroup("GoldTrapSpikes") + gvar22 = ns.ObjectGroup("WolfCaveTriggers") + gvar23 = ns.ObjectGroup("SkeletonSquad") + gvar25 = ns.ObjectGroup("NecroTriggers") + gvar24 = ns.ObjectGroup("ElevatorGroup1") + gvar26 = ns.ObjectGroup("SkeletonMarchTriggers") + gvar27 = ns.WallGroup("SecretHallWalls01") + gvar28 = ns.WallGroup("NecroWalls") + gvar29 = ns.WallGroup("NecroSafetyWalls") + wp30 = ns.Waypoint("NecroWP") + wp31 = ns.Waypoint("GoldTrapWP1") + wp32 = ns.Waypoint("GoldTrapWP2") + wp33 = ns.Waypoint("GoldTrapWP3") + wp34 = ns.Waypoint("GoldTrapWP4") + wp37 = ns.Waypoint("WolfCreateWP01") + wp38 = ns.Waypoint("WolfCreateWP02") + wp39 = ns.Waypoint("LoneWolf01DestWP") + wp40 = ns.Waypoint("Wolf01FacingWP") + wp35 = ns.Waypoint("WolfCreate01Dest") + wp36 = ns.Waypoint("WolfCreate02Dest") + wp41[0] = ns.Waypoint("TeleWP0") + wp41[1] = ns.Waypoint("TeleWP1") + wp41[2] = ns.Waypoint("TeleWP2") + wp41[3] = ns.Waypoint("TeleWP3") + wp41[4] = ns.Waypoint("TeleWP4") + wp42[0] = ns.Waypoint("WallSmokeWP0") + wp42[1] = ns.Waypoint("WallSmokeWP1") + wp42[2] = ns.Waypoint("WallSmokeWP2") + wp42[3] = ns.Waypoint("WallSmokeWP3") + wp42[4] = ns.Waypoint("WallSmokeWP4") + wp43 = ns.Waypoint("PlayerSounds") + gvar44 = ns.WaypointGroup("SearchNetwork1") + ns.StoryPic(obj9, "WoundedConjurerPic") + ns.StoryPic(obj10, "WoundedConjurerPic") + ns.StoryPic(obj16, "NecromancerPic") + ns.UnBlind() +} +func PlaySwamp() { + ns.Music(25, 100) +} +func PlayAction() { + ns.Music(26, 100) +} +func PlayAction2() { + ns.Music(28, 100) +} +func PlayMordwyn() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(21, 100) +LABEL1: + return +} +func PlayOgre() { + ns.Music(7, 100) +} +func PlayCaves() { + ns.Music(18, 100) +} +func PlayWasteland() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(19, 100) +LABEL1: + return +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func DisableGoldTrapSpikes() { + ns.ObjectGroupOff(gvar21) +} +func TriggerGoldTrapPoison() { + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp33), ns.GetWaypointY(wp33), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp34), ns.GetWaypointY(wp34), 0, 0) +} +func TriggerGoldTrap() { + ns.ObjectGroupOn(gvar21) + ns.FrameTimer(20, TriggerGoldTrapPoison) +} +func ToggleElevatorGroup1() { + ns.ObjectGroupToggle(gvar24) +} +func DisableTL() { + ns.ObjectOff(obj20) +} +func WolfOrders() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + ) + v0 = ns.GetWaypointX(wp35) + v1 = ns.GetWaypointY(wp35) + v2 = ns.GetWaypointX(wp36) + v3 = ns.GetWaypointY(wp36) + v4 = ns.GetWaypointX(wp39) + v5 = ns.GetWaypointY(wp39) + ns.CreatureGuard(obj50, v0, v1, v4, v5, 350) + ns.CreatureGuard(obj51, v2, v3, v4, v5, 350) + ns.AggressionLevel(obj50, 0.83) + ns.AggressionLevel(obj51, 0.83) +} +func CainDialogStart() { + var v0 int + v0 = gvar53 + if v0 == gvar45 { + goto LABEL1 + } + if v0 == gvar46 { + goto LABEL2 + } + if v0 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainAsk") + flag57 = true + goto LABEL4 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainHealed") + flag57 = true + goto LABEL4 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainEscort") + flag57 = true + goto LABEL4 +LABEL4: + return +} +func CainDialogEnd() { + var ( + v0 int + v1 ns.ObjectID + v2 int + ) + v2 = gvar53 + if v2 == gvar45 { + goto LABEL1 + } + if v2 == gvar46 { + goto LABEL2 + } + if v2 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.GetAnswer(obj9) + if v0 != 1 { + goto LABEL5 + } + v1 = ns.GetLastItem(ns.GetHost()) + for { + if v1 == 0 { + goto LABEL6 + } + if !(ns.HasClass(v1, ns.FOOD) && ns.HasSubclass(v1, ns.HEALTH_POTION)) { + goto LABEL7 + } + ns.Drop(ns.GetHost(), v1) + ns.Delete(v1) + fvar55 = ns.GetObjectX(obj9) + fvar56 = ns.GetObjectY(obj9) + CainRescue() + return + LABEL7: + v1 = ns.GetPreviousItem(v1) + } +LABEL6: + ns.PrintToAll("War09c:CainNoPotion") + goto LABEL9 +LABEL5: + ns.FrameTimer(1, CainPlea2) +LABEL9: + goto LABEL4 +LABEL2: + ns.CreatureFollow(obj10, ns.GetHost()) + ns.BecomePet(obj10) + ns.PrintToAll("War09c:SavedCain") + ns.GiveXp(ns.GetHost(), 2500) + ns.CancelDialog(obj10) + flag61 = true + gvar53 = gvar47 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func LichFight() { + ns.ObjectOn(obj18) + ns.Enchant(obj18, ns.ENCHANT_INVISIBLE, 3) + ns.MoveObject(obj18, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3])) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3]), 0, 0) +} +func NecroTalk() { + if !ns.IsCaller(obj16) { + goto LABEL1 + } + ns.ObjectOff(obj17) + ns.SetDialog(obj16, ns.NORMAL, NecroDialogStart, NecroDialogEnd) + ns.StartDialog(obj16, ns.GetHost()) +LABEL1: + return +} +func MoveBody() { + ns.Delete(obj9) + ns.MoveObject(obj10, fvar55, fvar56) +} +func StartNecroFight2() { + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.Walk(obj16, ns.GetWaypointX(wp30), ns.GetWaypointY(wp30)) +} +func WolfHarass2() { + var ( + v0 int + v1 int + v2 int + ) + v0 = ns.Random(40, 65) + v1 = ns.Random(0, 2) + if ns.IsObjectOn(obj11) { + goto LABEL1 + } + ns.ObjectOn(obj11) + ns.ObjectOn(obj12) + ns.ObjectOn(obj13) +LABEL1: + v2 = v1 + if v2 == 0 { + goto LABEL2 + } + if v2 == 1 { + goto LABEL3 + } + if v2 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + if !(flag58 == false && flag63 == false) { + goto LABEL6 + } + ns.HitLocation(obj11, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL7 +LABEL6: + v0 = 2 +LABEL7: + goto LABEL5 +LABEL3: + if !(flag59 == false && flag64 == false) { + goto LABEL8 + } + ns.HitLocation(obj12, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL9 +LABEL8: + v0 = 2 +LABEL9: + goto LABEL5 +LABEL4: + if !(flag60 == false && flag65 == false) { + goto LABEL10 + } + ns.HitLocation(obj13, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL11 +LABEL10: + v0 = 2 +LABEL11: + goto LABEL5 +LABEL5: + if !(flag63 == false || flag64 == false || flag65 == false) { + goto LABEL12 + } + ns.FrameTimer(v0, WolfHarass2) + goto LABEL13 +LABEL12: + return +LABEL13: + return +} +func CainPlea2() { + ns.Chat(obj9, "War09c:CainPlea2") +} +func MapEntry() { + ns.NoWallSound(false) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func KeepOut2() { + if flag69 { + goto LABEL1 + } + if !ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func Secret01Declare() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 75) +} +func Secret02Declare() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +} +func SkeletonMarch() { + if !(ns.IsCaller(ns.GetHost()) || ns.IsOwnedBy(ns.GetCaller(), ns.GetHost())) { + goto LABEL1 + } + ns.ObjectGroupOff(gvar26) + ns.ObjectGroupOn(gvar23) + ns.Wander(obj5) + ns.Wander(obj6) + ns.Wander(obj7) + ns.Wander(obj8) +LABEL1: + return +} +func LoneWolf01Retreat() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp39) + v1 = ns.GetWaypointY(wp39) + v2 = ns.GetWaypointX(wp40) + v3 = ns.GetWaypointY(wp40) + ns.RetreatLevel(obj4, 0) + ns.CreatureGuard(obj4, v0, v1, v2, v3, 150) +} +func WolfAmbush() { + ns.ObjectGroupOff(gvar22) + obj50 = ns.CreateObject("BlackWolf", wp37) + obj51 = ns.CreateObject("BlackWolf", wp38) + ns.FrameTimer(1, WolfOrders) +} +func HomePatrol() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.GoBackHome(ns.GetTrigger()) + ns.PauseObject(ns.GetTrigger(), 120) + ns.Wander(ns.GetTrigger()) +} +func WolfGone() { + if !ns.IsTrigger(obj11) { + goto LABEL1 + } + flag58 = true + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL1 + } + ns.AggressionLevel(obj11, 0.5) +LABEL1: + if !ns.IsTrigger(obj12) { + goto LABEL2 + } + flag59 = true + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL2 + } + ns.AggressionLevel(obj12, 0.5) +LABEL2: + if !ns.IsTrigger(obj13) { + goto LABEL3 + } + flag60 = true + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL3 + } + ns.AggressionLevel(obj13, 0.5) +LABEL3: + if !(flag58 == true && flag59 == true && flag60 == true) { + goto LABEL4 + } + ns.DestroyChat(obj9) + flag57 = true + gvar54 = gvar49 + ns.SetDialog(obj9, ns.YESNO, CainDialogStart, CainDialogEnd) +LABEL4: + return +} +func CainPlea() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ns.CurrentHealth(obj9) > 0) { + goto LABEL1 + } + v0 = gvar54 + if v0 == gvar48 { + goto LABEL2 + } + if v0 == gvar49 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.Chat(obj9, "War09c:CainPlea") + goto LABEL1 +LABEL3: + ns.Chat(obj9, "War09c:CainPlea2") + goto LABEL1 +LABEL1: + return +} +func WolfHarass() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !(r1 && flag61 == false) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + if !(flag61 == false && flag62 == false) { + goto LABEL2 + } + WolfHarass2() +LABEL2: + return +} +func WolvesTargetPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if flag58 { + goto LABEL2 + } + flag63 = true + ns.AggressionLevel(obj11, 0.5) + ns.Attack(obj11, ns.GetHost()) +LABEL2: + if flag59 { + goto LABEL3 + } + flag64 = true + ns.AggressionLevel(obj12, 0.5) + ns.Attack(obj12, ns.GetHost()) +LABEL3: + if flag60 { + goto LABEL1 + } + flag65 = true + ns.AggressionLevel(obj13, 0.5) + ns.Attack(obj13, ns.GetHost()) +LABEL1: + return +} +func CainDie() { + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL1 + } + ns.AggressionLevel(obj11, 0.83) +LABEL1: + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL2 + } + ns.AggressionLevel(obj12, 0.83) +LABEL2: + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL3 + } + ns.AggressionLevel(obj13, 0.83) +LABEL3: + fvar55 = ns.GetObjectX(obj9) + fvar56 = ns.GetObjectY(obj9) + flag62 = true + ns.ObjectOn(obj10) + ns.Damage(obj10, 0, 200000, 0) + ns.FrameTimer(1, MoveBody) +} +func CainRescue() { + ns.Delete(obj9) + ns.MoveObject(obj10, fvar55, fvar56) + ns.ObjectOn(obj10) + ns.CreatureGuard(obj10, fvar55, fvar56, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + gvar53 = gvar46 + ns.SetDialog(obj10, ns.NORMAL, CainDialogStart, CainDialogEnd) + ns.LookAtObject(obj10, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj10) + ns.StartDialog(obj10, ns.GetHost()) +} +func NecroDialogStart() { + var ( + v0 int + v1 int + ) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj16, ns.GetHost()) + ns.LookAtObject(obj15, ns.GetHost()) + ns.LookAtObject(obj14, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj16) + ns.TellStory(ns.SwordsmanHurt, "Con09a:NecroThreat1") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj16, ns.GetHost()) + ns.LookAtObject(obj15, ns.GetHost()) + ns.LookAtObject(obj14, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj16) + ns.TellStory(ns.SwordsmanHurt, "Con09a:NecroThreat4") + goto LABEL3 +LABEL3: + return +} +func NecroDialogEnd() { + ns.CancelDialog(obj16) + ns.AggressionLevel(obj14, 0.83) + ns.AggressionLevel(obj15, 0.83) + ns.AggressionLevel(obj16, 0.83) + ns.CreatureIdle(obj14) + ns.CreatureIdle(obj15) + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.FrameTimer(ivar52, LichFight) +} +func StartNecroFight() { + var v0 int + ns.WayPointGroupOff(gvar44) + ns.ObjectOff(obj19) + ns.ObjectGroupOff(gvar25) + ns.ObjectOn(obj17) + ns.ObjectOn(obj14) + ns.ObjectOn(obj15) + ns.ObjectOn(obj16) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar29) + ns.NoWallSound(false) + ns.MusicPushEvent() + PlayAction2() + ns.WallGroupClose(gvar28) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp42[v0]), ns.GetWaypointY(wp42[v0]), 0, 0) + v0 += 1 + } +LABEL1: + ns.FrameTimer(1, StartNecroFight2) +} +func NecroTeleport() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp41[v2]) + v1 = ns.GetWaypointY(wp41[v2]) + if !(ns.IsCaller(obj14) || ns.IsCaller(obj15) || ns.IsCaller(obj16) || ns.IsCaller(obj18)) { + goto LABEL1 + } + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(ns.GetCaller(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +LABEL1: + return +} +func NecroTeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp41[v2]) + v1 = ns.GetWaypointY(wp41[v2]) + if !(ns.IsTrigger(obj14) || ns.IsTrigger(obj15) || ns.IsTrigger(obj16)) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 15) +LABEL1: + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func OpenMagicWalls() { + var v0 int + if !ns.IsTrigger(obj14) { + goto LABEL1 + } + flag66 = true +LABEL1: + if !ns.IsTrigger(obj15) { + goto LABEL2 + } + flag67 = true +LABEL2: + if !ns.IsTrigger(obj16) { + goto LABEL3 + } + flag68 = true +LABEL3: + if !ns.IsTrigger(obj18) { + goto LABEL4 + } + flag69 = true +LABEL4: + if !(flag66 == true && flag67 == true && flag68 == true && flag69 == true) { + goto LABEL5 + } + ns.WallGroupOpen(gvar28) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL6 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp42[v0]), ns.GetWaypointY(wp42[v0]), 0, 0) + v0 += 1 + } +LABEL6: + ns.WayPointGroupOn(gvar44) + ns.MusicPopEvent() +LABEL5: + return +} +func TeleportToPlayer() { + var ( + v0 int + v1 float32 + v2 float32 + v3 ns.WaypointID + ) + v2 = 1e+06 + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + v1 = ns.Distance(ns.GetWaypointX(wp41[v0]), ns.GetWaypointY(wp41[v0]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v1 < v2) { + goto LABEL2 + } + v2 = v1 + v3 = wp41[v0] + LABEL2: + v0 += 1 + } +LABEL1: + ns.Enchant(obj18, ns.ENCHANT_INVISIBLE, 1) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(obj18), ns.GetObjectY(obj18), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj18), ns.GetObjectY(obj18), 0, 0) + ns.MoveObject(obj18, ns.GetWaypointX(v3), ns.GetWaypointY(v3)) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(v3), ns.GetWaypointY(v3), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(v3), ns.GetWaypointY(v3), 0, 0) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con09d/dummy_test.go b/examples/con09d/dummy_test.go new file mode 100644 index 0000000..cefe2f8 --- /dev/null +++ b/examples/con09d/dummy_test.go @@ -0,0 +1,6 @@ +package con09d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con10a/con10a.go b/examples/con10a/con10a.go new file mode 100644 index 0000000..ac3f3ed --- /dev/null +++ b/examples/con10a/con10a.go @@ -0,0 +1,828 @@ +package con10a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + gvar48 ns.ObjectGroupID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + wp59 ns.WaypointID + wp60 ns.WaypointID + wp61 ns.WaypointID + gvar62 ns.WallGroupID + gvar63 ns.WallGroupID + gvar64 ns.WallGroupID + gvar65 ns.ObjectGroupID + gvar66 ns.ObjectGroupID + gvar67 ns.ObjectGroupID + gvar68 ns.ObjectGroupID + gvar69 ns.ObjectGroupID + gvar70 ns.ObjectGroupID + flag71 bool + flag72 bool + flag73 bool + flag74 bool + gvar75 ns.WallGroupID + gvar76 ns.WallGroupID + gvar77 ns.WallGroupID + gvar78 ns.ObjectGroupID + obj79 ns.ObjectID + obj80 ns.ObjectID + gvar81 ns.WallGroupID + flag82 bool + flag83 bool + wp84 ns.WaypointID + wp85 ns.WaypointID + obj86 ns.ObjectID + obj87 ns.ObjectID + wp88 ns.WaypointID + wp89 ns.WaypointID + obj90 ns.ObjectID + gvar91 ns.WallGroupID + gvar92 ns.WallGroupID + gvar93 ns.ObjectGroupID + gvar94 ns.ObjectGroupID + gvar95 ns.ObjectGroupID + gvar96 ns.ObjectGroupID + gvar97 ns.ObjectGroupID + gvar98 ns.ObjectGroupID + wp99 ns.WaypointID + wp100 ns.WaypointID + wp101 ns.WaypointID + wp102 ns.WaypointID + wp103 ns.WaypointID + wp104 ns.WaypointID + wp105 ns.WaypointID + gvar106 ns.ObjectGroupID + obj107 ns.ObjectID + obj108 ns.ObjectID + obj109 ns.ObjectID + obj110 ns.ObjectID + gvar111 int + wp112 ns.WaypointID + wp113 ns.WaypointID + gvar114 ns.WallGroupID + gvar115 ns.WallGroupID + gvar116 ns.ObjectGroupID + gvar117 ns.WallGroupID + gvar118 ns.WallGroupID + wp119 ns.WaypointID + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + wp123 ns.WaypointID + wp124 ns.WaypointID + fvar125 float32 + fvar126 float32 + flag127 bool + flag128 bool +) + +func init() { + flag71 = false + flag72 = false + flag73 = false + flag74 = false + flag83 = false + flag82 = false + flag127 = false + flag128 = false +} +func DisableArrow01() { + ns.ObjectOff(obj4) +} +func EnableArrow01() { + ns.ObjectOn(obj4) + ns.FrameTimer(1, DisableArrow01) +} +func DisableArrow02() { + ns.ObjectOff(obj5) +} +func EnableArrow02() { + ns.ObjectOn(obj5) + ns.FrameTimer(1, DisableArrow02) +} +func DisableArrow03() { + ns.ObjectOff(obj6) +} +func EnableArrow03() { + ns.ObjectOn(obj6) + ns.FrameTimer(1, DisableArrow03) +} +func DisableArrow04() { + ns.ObjectOff(obj7) +} +func EnableArrow04() { + ns.ObjectOn(obj7) + ns.FrameTimer(1, DisableArrow04) +} +func DisableArrow05() { + ns.ObjectOff(obj8) +} +func EnableArrow05() { + ns.ObjectOn(obj8) + ns.FrameTimer(1, DisableArrow05) +} +func DisableArrow06() { + ns.ObjectOff(obj9) +} +func EnableArrow06() { + ns.ObjectOn(obj9) + ns.FrameTimer(1, DisableArrow06) +} +func DisableArrow07() { + ns.ObjectOff(obj10) +} +func EnableArrow07() { + ns.ObjectOn(obj10) + ns.FrameTimer(1, DisableArrow07) +} +func DisableArrow08() { + ns.ObjectOff(obj11) +} +func EnableArrow08() { + ns.ObjectOn(obj11) + ns.FrameTimer(1, DisableArrow08) +} +func DisableArrow09() { + ns.ObjectOff(obj12) +} +func EnableArrow09() { + ns.ObjectOn(obj12) + ns.FrameTimer(1, DisableArrow09) +} +func DisableArrow10() { + ns.ObjectOff(obj13) +} +func EnableArrow10() { + ns.ObjectOn(obj13) + ns.FrameTimer(1, DisableArrow10) +} +func DisableArrow11() { + ns.ObjectOff(obj14) +} +func EnableArrow11() { + ns.ObjectOn(obj14) + ns.FrameTimer(1, DisableArrow11) +} +func DisableArrow12() { + ns.ObjectOff(obj15) +} +func EnableArrow12() { + ns.ObjectOn(obj15) + ns.FrameTimer(1, DisableArrow12) +} +func DisableArrow13() { + ns.ObjectOff(obj16) +} +func EnableArrow13() { + ns.ObjectOn(obj16) + ns.FrameTimer(1, DisableArrow13) +} +func DisableArrow14() { + ns.ObjectOff(obj17) +} +func EnableArrow14() { + ns.ObjectOn(obj17) + ns.FrameTimer(1, DisableArrow14) +} +func DisableArrow15() { + ns.ObjectOff(obj18) +} +func EnableArrow15() { + ns.ObjectOn(obj18) + ns.FrameTimer(1, DisableArrow15) +} +func DisableArrow25() { + ns.ObjectOff(obj28) +} +func EnableArrow25() { + ns.ObjectOn(obj28) + ns.FrameTimer(1, DisableArrow25) +} +func DisableArrow26() { + ns.ObjectOff(obj29) +} +func EnableArrow26() { + ns.ObjectOn(obj29) + ns.FrameTimer(1, DisableArrow26) +} +func DisableArrow27() { + ns.ObjectOff(obj30) +} +func EnableArrow27() { + ns.ObjectOn(obj30) + ns.FrameTimer(1, DisableArrow27) +} +func DisableArrow28() { + ns.ObjectOff(obj31) +} +func EnableArrow28() { + ns.ObjectOn(obj31) + ns.FrameTimer(1, DisableArrow28) +} +func DisableArrow29() { + ns.ObjectOff(obj32) +} +func EnableArrow29() { + ns.ObjectOn(obj32) + ns.FrameTimer(1, DisableArrow29) +} +func DisableArrow30() { + ns.ObjectOff(obj33) +} +func EnableArrow30() { + ns.ObjectOn(obj33) + ns.FrameTimer(1, DisableArrow30) +} +func DisableArrow31() { + ns.ObjectOff(obj34) +} +func EnableArrow31() { + ns.ObjectOn(obj34) + ns.FrameTimer(1, DisableArrow31) +} +func DisableArrow32() { + ns.ObjectOff(obj35) +} +func EnableArrow32() { + ns.ObjectOn(obj35) + ns.FrameTimer(1, DisableArrow32) +} +func DisableArrow33() { + ns.ObjectOff(obj36) +} +func EnableArrow33() { + ns.ObjectOn(obj36) + ns.FrameTimer(1, DisableArrow33) +} +func DisableArrow34() { + ns.ObjectOff(obj37) +} +func EnableArrow34() { + ns.ObjectOn(obj37) + ns.FrameTimer(1, DisableArrow34) +} +func DisableArrow35() { + ns.ObjectOff(obj38) +} +func EnableArrow35() { + ns.ObjectOn(obj38) + ns.FrameTimer(1, DisableArrow35) +} +func DisableArrow36() { + ns.ObjectOff(obj39) +} +func EnableArrow36() { + ns.ObjectOn(obj39) + ns.FrameTimer(1, DisableArrow36) +} +func DisableArrow37() { + ns.ObjectOff(obj40) +} +func EnableArrow37() { + ns.ObjectOn(obj40) + ns.FrameTimer(1, DisableArrow37) +} +func DisableArrow38() { + ns.ObjectOff(obj41) +} +func EnableArrow38() { + ns.ObjectOn(obj41) + ns.FrameTimer(1, DisableArrow38) +} +func DisableArrowGroup1() { + ns.ObjectOff(obj19) + ns.ObjectOff(obj20) + ns.ObjectOff(obj21) + ns.ObjectOff(obj22) +} +func EnableArrowGroup1() { + ns.ObjectOn(obj19) + ns.ObjectOn(obj20) + ns.ObjectOn(obj21) + ns.ObjectOn(obj22) + ns.FrameTimer(2, DisableArrowGroup1) +} +func DisableArrowGroup2() { + ns.ObjectOff(obj24) + ns.ObjectOff(obj25) + ns.ObjectOff(obj26) + ns.ObjectOff(obj27) +} +func EnableArrowGroup2() { + ns.ObjectOn(obj24) + ns.ObjectOn(obj25) + ns.ObjectOn(obj26) + ns.ObjectOn(obj27) + ns.FrameTimer(2, DisableArrowGroup2) +} +func Blocks2MoveBack() { + ns.Move(obj45, wp55) + ns.Move(obj46, wp56) + ns.Move(obj47, wp57) + ns.AudioEvent(ns.SpikeBlockMove, wp52) +} +func Blocks2Move() { + ns.ObjectGroupOff(gvar48) + ns.Move(obj45, wp52) + ns.Move(obj46, wp53) + ns.Move(obj47, wp54) + ns.AudioEvent(ns.SpikeBlockMove, wp55) +} +func OpenBlockWallGroup1() { + ns.WallGroupOpen(gvar62) +} +func OpenBlockWallGroup2() { + ns.WallGroupOpen(gvar63) +} +func OpenBlockWallGroup3() { + ns.WallGroupOpen(gvar64) +} +func FilterBlock5() int { + if !ns.IsCaller(obj46) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func EnableSpikeGroup1() { + ns.ObjectGroupOn(gvar78) + ns.AudioEvent(ns.FloorSpikesUp, wp53) +} +func UnlockSpikeDoor() { + ns.UnlockDoor(obj79) +} +func LockSpikeDoor() { + ns.LockDoor(obj79) +} +func SkelGroup1Hostilize() { + ns.GroupAggressionLevel(gvar65, 0.83) +} +func SkelGroup2Hostilize() { + ns.GroupAggressionLevel(gvar66, 0.83) +} +func SkelGroup3Hostilize() { + ns.GroupAggressionLevel(gvar67, 0.83) +} +func SkelGroup4Hostilize() { + ns.GroupAggressionLevel(gvar68, 0.83) +} +func SkelGroup5Hostilize() { + ns.GroupAggressionLevel(gvar69, 0.83) +} +func SkelGroup6Hostilize() { + ns.GroupAggressionLevel(gvar70, 0.83) +} +func OpenSecretWallGroup1() { + ns.WallGroupOpen(gvar75) +} +func OpenSecretWallGroup2() { + ns.WallGroupOpen(gvar76) +} +func OpenSecretWallGroup3() { + ns.WallGroupOpen(gvar77) +} +func Blocks1Move() { + ns.Move(obj42, wp49) + ns.Move(obj43, wp50) + ns.Move(obj44, wp51) + ns.AudioEvent(ns.SpikeBlockMove, wp58) + ns.AudioEvent(ns.SpikeBlockMove, wp60) + ns.AudioEvent(ns.SpikeBlockMove, wp61) +} +func Lever1Check() { + ns.WallGroupOpen(gvar63) + if flag71 { + goto LABEL1 + } + flag71 = true + ns.AudioEvent(ns.Gear3, wp61) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag71 == true && flag72 == true) { + goto LABEL2 + } + Blocks1Move() +LABEL2: + return +} +func Lever2Check() { + ns.WallGroupOpen(gvar62) + if flag72 { + goto LABEL1 + } + flag72 = true + ns.AudioEvent(ns.Gear3, wp60) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag71 == true && flag72 == true) { + goto LABEL2 + } + Blocks1Move() +LABEL2: + return +} +func Lever3Check() { + if flag73 { + goto LABEL1 + } + flag73 = true + ns.AudioEvent(ns.Gear3, wp59) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag73 == true && flag74 == true) { + goto LABEL2 + } + OpenSecretWallGroup3() + ns.ObjectOn(obj80) +LABEL2: + return +} +func Lever4Check() { + if flag74 { + goto LABEL1 + } + flag74 = true + ns.AudioEvent(ns.Gear3, wp59) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag73 == true && flag74 == true) { + goto LABEL2 + } + OpenSecretWallGroup3() + ns.ObjectOn(obj80) +LABEL2: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OpenExitWallGroup() { + ns.WallGroupOpen(gvar81) +} +func PuzzleCheck() { + if !(flag82 && flag83) { + goto LABEL1 + } + OpenExitWallGroup() +LABEL1: + return +} +func LeftPuzzleActivation() { + flag83 = true + ns.AudioEvent(ns.CreatureCageAppears, wp85) + PuzzleCheck() +} +func RightPuzzleActivation() { + flag82 = true + ns.AudioEvent(ns.CreatureCageAppears, wp84) + PuzzleCheck() +} +func LeftPuzzleRelease() { + flag83 = false + PuzzleCheck() +} +func RightPuzzleRelease() { + flag82 = false + PuzzleCheck() +} +func OrbLightOff() { + ns.ObjectOff(obj86) + ns.MoveObject(obj87, ns.GetWaypointX(wp88), ns.GetWaypointY(wp88)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj86, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj87, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp89, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj86) + ns.AudioEvent(ns.BallBounce, wp89) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func MissionStart() { + ns.StartupScreen(10) + ns.FrameTimer(10, PlaySubMusic) + ns.JournalEntry(ns.GetHost(), "War10aOrbQuest", 2) +} +func InitializeVampireKnights() { + obj120 = ns.Object("VampireKnight1") + obj121 = ns.Object("VKBat1") + wp123 = ns.Waypoint("VampireKnight1WP") + wp124 = ns.Waypoint("BatCreate") +} +func OpenVampire1WallGroup() { + ns.WallGroupOpen(gvar114) +} +func MapInitialize() { + obj90 = ns.Object("MissionTrig") + gvar118 = ns.WallGroup("GoldKeyWallGroup") + wp119 = ns.Waypoint("GoldKeyExitWP") + gvar93 = ns.ObjectGroup("PitAmbushGroup") + gvar91 = ns.WallGroup("SkelPitWallGroup") + gvar92 = ns.WallGroup("ElevatorWallGroup") + gvar94 = ns.ObjectGroup("PitSpikesGroup1") + gvar95 = ns.ObjectGroup("PitSpikesGroup2") + gvar96 = ns.ObjectGroup("PitSpikesGroup3") + gvar97 = ns.ObjectGroup("PitSpikesGroup4") + gvar98 = ns.ObjectGroup("PitSpikesGroup5") + wp99 = ns.Waypoint("Spikes1AudioWP") + wp100 = ns.Waypoint("Spikes2AudioWP") + wp101 = ns.Waypoint("Spikes3AudioWP") + wp102 = ns.Waypoint("Spikes4AudioWP") + wp103 = ns.Waypoint("Spikes5AudioWP") + wp104 = ns.Waypoint("Secret1AudioWP") + obj4 = ns.Object("Arrow01") + obj5 = ns.Object("Arrow02") + obj6 = ns.Object("Arrow03") + obj7 = ns.Object("Arrow04") + obj8 = ns.Object("Arrow05") + obj9 = ns.Object("Arrow06") + obj10 = ns.Object("Arrow07") + obj11 = ns.Object("Arrow08") + obj12 = ns.Object("Arrow09") + obj13 = ns.Object("Arrow10") + obj14 = ns.Object("Arrow11") + obj15 = ns.Object("Arrow12") + obj16 = ns.Object("Arrow13") + obj17 = ns.Object("Arrow14") + obj18 = ns.Object("Arrow15") + obj19 = ns.Object("Arrow16") + obj20 = ns.Object("Arrow17") + obj21 = ns.Object("Arrow18") + obj22 = ns.Object("Arrow19") + obj23 = ns.Object("Arrow20") + obj24 = ns.Object("Arrow21") + obj25 = ns.Object("Arrow22") + obj26 = ns.Object("Arrow23") + obj27 = ns.Object("Arrow24") + obj28 = ns.Object("Arrow25") + obj29 = ns.Object("Arrow26") + obj30 = ns.Object("Arrow27") + obj31 = ns.Object("Arrow28") + obj32 = ns.Object("Arrow29") + obj33 = ns.Object("Arrow30") + obj34 = ns.Object("Arrow31") + obj35 = ns.Object("Arrow32") + obj36 = ns.Object("Arrow33") + obj37 = ns.Object("Arrow34") + obj38 = ns.Object("Arrow35") + obj39 = ns.Object("Arrow36") + obj40 = ns.Object("Arrow37") + obj41 = ns.Object("Arrow38") + obj42 = ns.Object("Block1") + obj43 = ns.Object("Block2") + obj44 = ns.Object("Block3") + obj45 = ns.Object("Block4") + obj46 = ns.Object("Block5") + obj47 = ns.Object("Block6") + wp49 = ns.Waypoint("Block1WP") + wp50 = ns.Waypoint("Block2WP") + wp51 = ns.Waypoint("Block3WP") + wp52 = ns.Waypoint("Block4WP") + wp53 = ns.Waypoint("Block5WP") + wp54 = ns.Waypoint("Block6WP") + wp55 = ns.Waypoint("Block4WPb") + wp56 = ns.Waypoint("Block5WPb") + wp57 = ns.Waypoint("Block6WPb") + wp58 = ns.Waypoint("BlockAudioWP") + wp59 = ns.Waypoint("BlockAudio2WP") + wp60 = ns.Waypoint("BlockAudio3WP") + wp61 = ns.Waypoint("BlockAudio4WP") + wp105 = ns.Waypoint("Secret2AudioWP") + gvar106 = ns.ObjectGroup("Secret200Group") + gvar48 = ns.ObjectGroup("BlockTriggers") + obj107 = ns.Object("Blocks2Trigger") + gvar62 = ns.WallGroup("BlockWallGroup1") + gvar63 = ns.WallGroup("BlockWallGroup2") + gvar64 = ns.WallGroup("BlockWallGroup3") + gvar78 = ns.ObjectGroup("SpikeGroup1") + obj79 = ns.Object("SpikeDoor") + ns.LockDoor(obj79) + obj108 = ns.Object("StoneBlock1") + gvar75 = ns.WallGroup("SecretWallGroup1") + gvar76 = ns.WallGroup("SecretWallGroup2") + gvar77 = ns.WallGroup("SecretWallGroup3") + gvar65 = ns.ObjectGroup("SkelGroup1") + gvar66 = ns.ObjectGroup("SkelGroup2") + gvar67 = ns.ObjectGroup("SkelGroup3") + gvar68 = ns.ObjectGroup("SkelGroup4") + gvar69 = ns.ObjectGroup("SkelGroup5") + gvar70 = ns.ObjectGroup("SkelGroup6") + obj109 = ns.Object("VampireKnight1") + obj110 = ns.Object("VKbat1") + wp112 = ns.Waypoint("VampireKnight1WP ") + wp113 = ns.Waypoint("BatCreate") + gvar114 = ns.WallGroup("Vampire1WallGroup") + gvar115 = ns.WallGroup("Vampire1WallGroup2") + gvar116 = ns.ObjectGroup("Vampire1TrigGroup") + gvar117 = ns.WallGroup("CherubWallGroup") + OpenVampire1WallGroup() + gvar81 = ns.WallGroup("ExitWallGroup") + obj86 = ns.Object("OrbLight") + wp89 = ns.Waypoint("OrbSoundWP") + obj87 = ns.Object("OrbEffect") + wp88 = ns.Waypoint("OrbEffectWP") + wp84 = ns.Waypoint("RightPuzzleWP") + wp85 = ns.Waypoint("LeftPuzzleWP") + obj80 = ns.Object("Necro1") + InitializeVampireKnights() + MissionStart() +} +func MapEntry() { +} +func OpenGoldKeyWallGroup() { + ns.WallGroupOpen(gvar118) + ns.AudioEvent(ns.FlagDrop, wp119) +} +func OpenCherubWallGroup() { + ns.WallGroupOpen(gvar117) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp104) +} +func Secret200XP() { + ns.GiveXp(ns.GetHost(), 200) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp105) + ns.ObjectGroupOff(gvar106) +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func ToggleSpikes1() { + ns.ObjectGroupToggle(gvar94) + ns.AudioEvent(ns.FloorSpikesDown, wp99) +} +func ToggleSpikes2() { + ns.ObjectGroupToggle(gvar95) + ns.ObjectGroupToggle(gvar96) + ns.AudioEvent(ns.FloorSpikesDown, wp100) + ns.AudioEvent(ns.FloorSpikesDown, wp101) +} +func ToggleSpikes3() { + ns.ObjectGroupToggle(gvar97) + ns.ObjectGroupToggle(gvar98) + ns.AudioEvent(ns.FloorSpikesDown, wp102) + ns.AudioEvent(ns.FloorSpikesDown, wp103) +} +func OpenSkelPitWallGroup() { + ns.WallGroupOpen(gvar91) + ns.GroupAggressionLevel(gvar93, 0.83) +} +func OpenElevatorWallGroup() { + ns.WallGroupOpen(gvar92) +} +func BatToVampireKnight() { + ns.Effect(ns.BLUE_SPARKS, fvar125, fvar126, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar125, fvar126, 0, 0) + ns.Enchant(obj120, ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj120, fvar125, fvar126) + ns.LookAtObject(obj120, ns.GetHost()) + PlayAction3Music() +} +func SetRetreatBat() { + ns.AggressionLevel(obj122, 0.83) + ns.SetCallback(obj122, 7, BatDie) + ns.SetCallback(obj122, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj122), ns.GetObjectY(obj122), 0, 0) + ns.MoveWaypoint(wp124, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.Delete(obj122) + ns.AudioEvent(ns.BurnCast, wp124) + v0 = ns.CreateObject("Flame", wp124) + v1 = ns.CreateObject("MediumFlame", wp124) + v2 = ns.CreateObject("SmallFlame", wp124) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 83) + ns.DeleteObjectTimer(v2, 85) + ns.WallGroupOpen(gvar114) + ns.WallGroupOpen(gvar115) + PlaySubMusic() + ns.GiveXp(ns.GetHost(), 250) +} +func ChangeOnSight() { + if !flag128 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + fvar125 = ns.GetObjectX(ns.GetTrigger()) + fvar126 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj120) + ns.Damage(obj120, 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + ns.FrameTimer(1, BatToVampireKnight) +} +func VKDie() { + fvar125 = ns.GetObjectX(ns.GetTrigger()) + fvar126 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp124, fvar125, fvar126) + obj122 = ns.CreateObject("Bat", wp124) + ns.FrameTimer(1, SetRetreatBat) +} +func CloseVampire1WallGroup() { + ns.WallGroupClose(gvar114) + ns.ObjectGroupOff(gvar116) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/con10a/dummy_test.go b/examples/con10a/dummy_test.go new file mode 100644 index 0000000..a291246 --- /dev/null +++ b/examples/con10a/dummy_test.go @@ -0,0 +1,6 @@ +package con10a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con10b/con10b.go b/examples/con10b/con10b.go new file mode 100644 index 0000000..3b1bf3b --- /dev/null +++ b/examples/con10b/con10b.go @@ -0,0 +1,627 @@ +package con10b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.ObjectGroupID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + wp14 ns.WaypointID + wp15 ns.WaypointID + wp16 ns.WaypointID + wp17 ns.WaypointID + wp18 ns.WaypointID + wp19 ns.WaypointID + wp20 ns.WaypointID + wp21 ns.WaypointID + wp22 ns.WaypointID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + gvar41 int + gvar42 int + gvar43 int + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + gvar59 int + gvar60 int + gvar61 int + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID + wp69 ns.WaypointID + wp70 ns.WaypointID + gvar71 int + gvar72 int + gvar73 int + obj74 ns.ObjectID + obj75 ns.ObjectID + wp76 ns.WaypointID + wp77 ns.WaypointID + gvar78 ns.WallGroupID + gvar79 ns.ObjectGroupID + gvar80 ns.WallGroupID + gvar81 ns.WallGroupID + gvar82 ns.WallGroupID + obj83 ns.ObjectID + obj84 ns.ObjectID + gvar85 ns.ObjectGroupID + gvar86 ns.ObjectGroupID + gvar87 ns.WallGroupID + obj88 ns.ObjectID + wp89 ns.WaypointID + gvar90 ns.WallGroupID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + wp100 ns.WaypointID + wp101 ns.WaypointID + gvar102 ns.ObjectGroupID + gvar103 ns.WallGroupID + gvar104 ns.WallGroupID + gvar105 ns.WallGroupID + gvar106 ns.WallGroupID + gvar107 ns.WallGroupID + obj108 ns.ObjectID + obj109 ns.ObjectID + gvar110 ns.WallGroupID + obj111 [2]ns.ObjectID + obj112 [2]ns.ObjectID + obj113 ns.ObjectID + wp114 ns.WaypointID + wp115 ns.WaypointID + wp116 ns.WaypointID + fvar117 float32 + fvar118 float32 + flag119 bool + flag120 bool +) + +func init() { + gvar41 = 0 + gvar42 = 1 + gvar43 = gvar41 + gvar59 = 0 + gvar60 = 1 + gvar61 = gvar59 + gvar71 = 0 + gvar72 = 1 + gvar73 = gvar71 + flag119 = false + flag120 = false +} +func DisableArrow1() { + ns.ObjectOff(obj5) +} +func EnableArrow1() { + ns.ObjectOn(obj5) + ns.AudioEvent(ns.BowShoot, wp14) + ns.FrameTimer(1, DisableArrow1) +} +func DisableArrow2() { + ns.ObjectOff(obj6) +} +func EnableArrow2() { + ns.ObjectOn(obj6) + ns.AudioEvent(ns.BowShoot, wp15) + ns.FrameTimer(1, DisableArrow2) +} +func DisableArrow3() { + ns.ObjectOff(obj7) +} +func EnableArrow3() { + ns.ObjectOn(obj7) + ns.AudioEvent(ns.BowShoot, wp16) + ns.FrameTimer(1, DisableArrow3) +} +func DisableArrow4() { + ns.ObjectOff(obj8) +} +func EnableArrow4() { + ns.ObjectOn(obj8) + ns.AudioEvent(ns.BowShoot, wp17) + ns.FrameTimer(1, DisableArrow4) +} +func DisableArrow5() { + ns.ObjectOff(obj9) +} +func EnableArrow5() { + ns.ObjectOn(obj9) + ns.AudioEvent(ns.BowShoot, wp18) + ns.FrameTimer(1, DisableArrow5) +} +func DisableArrow6() { + ns.ObjectOff(obj10) +} +func EnableArrow6() { + ns.ObjectOn(obj10) + ns.AudioEvent(ns.BowShoot, wp19) + ns.FrameTimer(1, DisableArrow6) +} +func DisableArrow7() { + ns.ObjectOff(obj11) +} +func EnableArrow7() { + ns.ObjectOn(obj11) + ns.AudioEvent(ns.BowShoot, wp20) + ns.FrameTimer(1, DisableArrow7) +} +func DisableArrow8() { + ns.ObjectOff(obj12) +} +func EnableArrow8() { + ns.ObjectOn(obj12) + ns.AudioEvent(ns.BowShoot, wp21) + ns.FrameTimer(1, DisableArrow8) +} +func DisableArrow9() { + ns.ObjectOff(obj13) +} +func EnableArrow9() { + ns.ObjectOn(obj13) + ns.AudioEvent(ns.BowShoot, wp22) + ns.FrameTimer(1, DisableArrow9) +} +func DisableArrowTriggers() { + ns.ObjectGroupOff(gvar4) +} +func EnableArrowTriggers() { + ns.ObjectGroupOn(gvar4) +} +func BlockAGotoB() { + ns.Move(obj23, wp29) + ns.Move(obj24, wp30) + ns.Move(obj25, wp31) + ns.Move(obj26, wp32) + ns.Move(obj27, wp33) + ns.Move(obj28, wp34) + gvar43 = gvar42 + ns.AudioEvent(ns.SpikeBlockMove, wp30) + ns.AudioEvent(ns.BoulderMove, wp30) +} +func BlockAGotoC() { + ns.Move(obj23, wp35) + ns.Move(obj24, wp36) + ns.Move(obj25, wp37) + ns.Move(obj26, wp38) + ns.Move(obj27, wp39) + ns.Move(obj28, wp40) + gvar43 = gvar41 + ns.AudioEvent(ns.SpikeBlockMove, wp30) + ns.AudioEvent(ns.BoulderMove, wp30) +} +func BlockAGo() { + var v0 int + v0 = gvar43 + if v0 == gvar41 { + goto LABEL1 + } + if v0 == gvar42 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockAGotoB() + goto LABEL3 +LABEL2: + BlockAGotoC() + goto LABEL3 +LABEL3: + return +} +func BlockBGotoB() { + ns.Move(obj44, wp49) + ns.Move(obj45, wp50) + ns.Move(obj46, wp51) + ns.Move(obj47, wp52) + ns.Move(obj48, wp53) + gvar61 = gvar60 + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.AudioEvent(ns.BoulderMove, wp50) +} +func BlockBGotoC() { + ns.Move(obj44, wp54) + ns.Move(obj45, wp55) + ns.Move(obj46, wp56) + ns.Move(obj47, wp57) + ns.Move(obj48, wp58) + gvar61 = gvar59 + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.AudioEvent(ns.BoulderMove, wp50) +} +func BlockBGo() { + var v0 int + v0 = gvar61 + if v0 == gvar59 { + goto LABEL1 + } + if v0 == gvar60 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockBGotoB() + goto LABEL3 +LABEL2: + BlockBGotoC() + goto LABEL3 +LABEL3: + return +} +func BlockCGotoB() { + ns.Move(obj62, wp65) + ns.Move(obj63, wp66) + ns.Move(obj64, wp67) + gvar73 = gvar72 + ns.AudioEvent(ns.SpikeBlockMove, wp65) + ns.AudioEvent(ns.BoulderMove, wp65) +} +func BlockCGotoC() { + ns.Move(obj62, wp68) + ns.Move(obj63, wp69) + ns.Move(obj64, wp70) + gvar73 = gvar71 + ns.AudioEvent(ns.SpikeBlockMove, wp68) + ns.AudioEvent(ns.BoulderMove, wp68) +} +func BlockCGo() { + var v0 int + v0 = gvar73 + if v0 == gvar71 { + goto LABEL1 + } + if v0 == gvar72 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockCGotoB() + goto LABEL3 +LABEL2: + BlockCGotoC() + goto LABEL3 +LABEL3: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OrbLightOff() { + ns.ObjectOff(obj74) + ns.MoveObject(obj75, ns.GetWaypointX(wp76), ns.GetWaypointY(wp76)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj74, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj75, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp77, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj74) + ns.AudioEvent(ns.BallBounce, wp77) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func OpenBouncySecretWallGroup() { + ns.WallGroupOpen(gvar78) +} +func InitializeVampireKnights() { + obj111[0] = ns.Object("VampireKnight1") + obj112[0] = ns.Object("VKBat1") + wp114 = ns.Waypoint("VKSpot") + wp115 = ns.Waypoint("VampireKnight1WP") + wp116 = ns.Waypoint("BatCreate") +} +func MapInitialize() { + gvar80 = ns.WallGroup("ZombieAmbushWalls") + gvar79 = ns.ObjectGroup("ZombieAmbushGroup") + gvar81 = ns.WallGroup("SkeletonWallGroup") + gvar82 = ns.WallGroup("SkeletonWallGroup2") + obj83 = ns.Object("SkeletonTrigger1") + obj84 = ns.Object("SkeletonElevator") + gvar85 = ns.ObjectGroup("SkelAmbushGroup") + gvar86 = ns.ObjectGroup("SecretMechGroup") + gvar87 = ns.WallGroup("SecretMechWallGroup") + obj88 = ns.Object("SecretMechTrig") + wp89 = ns.Waypoint("Secret1AudioWP") + obj23 = ns.Object("BlockA1") + obj24 = ns.Object("BlockA2") + obj25 = ns.Object("BlockA3") + obj26 = ns.Object("BlockA4") + obj27 = ns.Object("BlockA5") + obj28 = ns.Object("BlockA6") + wp29 = ns.Waypoint("BlockWPA1b") + wp30 = ns.Waypoint("BlockWPA2b") + wp31 = ns.Waypoint("BlockWPA3b") + wp32 = ns.Waypoint("BlockWPA4b") + wp33 = ns.Waypoint("BlockWPA5b") + wp34 = ns.Waypoint("BlockWPA6b") + wp35 = ns.Waypoint("BlockWPA1c") + wp36 = ns.Waypoint("BlockWPA2c") + wp37 = ns.Waypoint("BlockWPA3c") + wp38 = ns.Waypoint("BlockWPA4c") + wp39 = ns.Waypoint("BlockWPA5c") + wp40 = ns.Waypoint("BlockWPA6c") + obj44 = ns.Object("BlockB1") + obj45 = ns.Object("BlockB2") + obj46 = ns.Object("BlockB3") + obj47 = ns.Object("BlockB4") + obj48 = ns.Object("BlockB5") + wp49 = ns.Waypoint("BlockWPB1b") + wp50 = ns.Waypoint("BlockWPB2b") + wp51 = ns.Waypoint("BlockWPB3b") + wp52 = ns.Waypoint("BlockWPB4b") + wp53 = ns.Waypoint("BlockWPB5b") + wp54 = ns.Waypoint("BlockWPB1c") + wp55 = ns.Waypoint("BlockWPB2c") + wp56 = ns.Waypoint("BlockWPB3c") + wp57 = ns.Waypoint("BlockWPB4c") + wp58 = ns.Waypoint("BlockWPB5c") + obj62 = ns.Object("BlockC1") + obj63 = ns.Object("BlockC2") + obj64 = ns.Object("BlockC3") + wp65 = ns.Waypoint("BlockWPC1b") + wp66 = ns.Waypoint("BlockWPC2b") + wp67 = ns.Waypoint("BlockWPC3b") + wp68 = ns.Waypoint("BlockWPC1c") + wp69 = ns.Waypoint("BlockWPC2c") + wp70 = ns.Waypoint("BlockWPC3c") + gvar90 = ns.WallGroup("VampireWallGroup") + obj91 = ns.Object("VampireKnight1") + obj92 = ns.Object("VKBat1") + obj93 = ns.Object("RetreatBat") + wp94 = ns.Waypoint("VampireKnight1WP") + wp95 = ns.Waypoint("BatCreate") + wp96 = ns.Waypoint("VKSpot") + InitializeVampireKnights() + gvar4 = ns.ObjectGroup("ArrowTrigGroup") + obj5 = ns.Object("Arrow1") + obj6 = ns.Object("Arrow2") + obj7 = ns.Object("Arrow3") + obj8 = ns.Object("Arrow4") + obj9 = ns.Object("Arrow5") + obj10 = ns.Object("Arrow6") + obj11 = ns.Object("Arrow7") + obj12 = ns.Object("Arrow8") + obj13 = ns.Object("Arrow9") + wp14 = ns.Waypoint("Arrow1WP") + wp15 = ns.Waypoint("Arrow2WP") + wp16 = ns.Waypoint("Arrow3WP") + wp17 = ns.Waypoint("Arrow4WP") + wp18 = ns.Waypoint("Arrow5WP") + wp19 = ns.Waypoint("Arrow6WP") + wp20 = ns.Waypoint("Arrow7WP") + wp21 = ns.Waypoint("Arrow8WP") + wp22 = ns.Waypoint("Arrow9WP") + obj97 = ns.Object("MechGolem1") + obj98 = ns.Object("MechGolem2") + obj99 = ns.Object("MechGolem3") + wp100 = ns.Waypoint("MechGolem2WP") + wp101 = ns.Waypoint("MechGolemAudioWP") + gvar102 = ns.ObjectGroup("GolemTrigGroup") + obj108 = ns.Object("MazeTrig1") + obj109 = ns.Object("MazeTrig2") + gvar103 = ns.WallGroup("GolemWallGroup") + gvar104 = ns.WallGroup("GolemWall2Group") + gvar105 = ns.WallGroup("GolemWall3Group") + gvar106 = ns.WallGroup("GolemGate1Group") + gvar107 = ns.WallGroup("GolemGate2Group") + gvar110 = ns.WallGroup("CherubBreakWallGroup") + obj74 = ns.Object("OrbLight") + obj75 = ns.Object("OrbEffect") + wp76 = ns.Waypoint("OrbEffectWP") + wp77 = ns.Waypoint("OrbSoundWP") + gvar78 = ns.WallGroup("BouncySecretWallGroup") +} +func Secret300XP() { + ns.GiveXp(ns.GetHost(), 300) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp89) +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func PlayAction1Music() { + ns.Music(26, 100) +} +func CherubWallsBreak() { + ns.WallGroupBreak(gvar110) + PlaySubMusic() +} +func GolemWallDown() { + ns.WallGroupOpen(gvar103) + ns.ObjectOn(obj97) + ns.AudioEvent(ns.MechGolemPowerUp, wp101) + ns.ObjectGroupOff(gvar102) + PlayAction1Music() +} +func GolemWall2Down() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar104) + ns.NoWallSound(false) + ns.ObjectOn(obj98) + ns.AudioEvent(ns.MechGolemRecognize, wp100) + ns.AudioEvent(ns.MechGolemPowerUp, wp100) +} +func GolemWall3Down() { + ns.WallGroupOpen(gvar105) + ns.ObjectOn(obj99) + ns.ObjectOn(obj88) +} +func OpenGolemGate1() { + ns.WallGroupOpen(gvar106) + ns.ObjectOff(obj108) +} +func OpenGolemGate2() { + ns.WallGroupOpen(gvar107) + ns.ObjectOff(obj109) +} +func HostilizeMe() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func BatToVampireKnight() { + if flag119 { + goto LABEL1 + } + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj111[0]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar117, fvar118, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar117, fvar118, 0, 0) + ns.Enchant(obj111[0], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj111[0], fvar117, fvar118) + ns.LookAtObject(obj111[0], ns.GetHost()) +} +func SetRetreatBat() { + ns.AggressionLevel(obj113, 0.83) + ns.SetCallback(obj113, 7, BatDie) + ns.SetCallback(obj113, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + if !(ns.CurrentHealth(obj113) <= 0) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj113), ns.GetObjectY(obj113), 0, 0) + ns.MoveWaypoint(wp116, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.Delete(obj113) + ns.AudioEvent(ns.BurnCast, wp116) + v0 = ns.CreateObject("Flame", wp116) + v1 = ns.CreateObject("MediumFlame", wp116) + v2 = ns.CreateObject("SmallFlame", wp116) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 85) + ns.DeleteObjectTimer(v2, 90) + ns.GiveXp(ns.GetHost(), 250) +LABEL1: + return +} +func ChangeOnSight() { + if !flag120 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj111[0]) + ns.Damage(obj111[0], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag119 = true + ns.FrameTimer(1, BatToVampireKnight) +} +func BatMove() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.SetCallback(ns.GetTrigger(), 4, ChangeOnSight) + ns.Move(obj112[0], wp114) +LABEL1: + return +} +func VKDie() { + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp116, fvar117, fvar118) + obj113 = ns.CreateObject("Bat", wp116) + ns.FrameTimer(1, SetRetreatBat) +} +func ZombieAmbush() { + ns.WallGroupOpen(gvar80) + ns.ObjectGroupOn(gvar79) +} +func SkeletonAttack() { + ns.WallGroupOpen(gvar81) + ns.WallGroupClose(gvar82) + ns.ObjectOn(obj83) + ns.ObjectGroupOn(gvar85) + PlayAction3Music() +} +func OpenSkeletonWallGroup2() { + ns.WallGroupOpen(gvar82) + ns.ObjectOn(obj84) +} +func Secret300() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 300) +} +func OpenSecretMechWallGroup() { + ns.WallGroupOpen(gvar87) + ns.GroupAggressionLevel(gvar86, 0.83) + Secret300() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con10b/dummy_test.go b/examples/con10b/dummy_test.go new file mode 100644 index 0000000..57e358e --- /dev/null +++ b/examples/con10b/dummy_test.go @@ -0,0 +1,6 @@ +package con10b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con10c/con10c.go b/examples/con10c/con10c.go new file mode 100644 index 0000000..b9442d1 --- /dev/null +++ b/examples/con10c/con10c.go @@ -0,0 +1,682 @@ +package con10c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 [21]ns.ObjectID + ivar5 int + obj6 ns.ObjectID + obj7 ns.ObjectID + wp8 ns.WaypointID + wp9 ns.WaypointID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 [6]ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + gvar40 ns.ObjectGroupID + gvar41 ns.ObjectGroupID + obj42 ns.ObjectID + wp43 [2]ns.WaypointID + wp44 ns.WaypointID + gvar45 ns.WallGroupID + gvar46 ns.WallGroupID + gvar47 ns.WallGroupID + gvar48 ns.WallGroupID + gvar49 ns.WallGroupID + gvar50 ns.WallGroupID + gvar51 ns.WallGroupID + gvar52 ns.WallGroupID + gvar53 ns.WallGroupID + gvar54 ns.WallGroupID + gvar55 ns.WallGroupID + gvar56 ns.WallGroupID + gvar57 ns.WallGroupID + gvar58 ns.WallGroupID + wp59 ns.WaypointID + wp60 ns.WaypointID + flag61 bool + flag62 bool + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + flag68 bool + ivar69 int + wp70 ns.WaypointID + obj71 ns.ObjectID + gvar72 ns.ObjectGroupID + wp73 [5]ns.WaypointID + wp74 ns.WaypointID + obj75 [2]ns.ObjectID + obj76 [2]ns.ObjectID + obj77 ns.ObjectID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + fvar81 float32 + fvar82 float32 + flag83 bool + flag84 bool +) + +func init() { + flag61 = false + flag62 = false + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + flag68 = false + ivar69 = 0 + flag83 = false + flag84 = false +} +func DisableAT(a1 int) { + ns.ObjectOff(obj4[a1]) +} +func FireAT0() { + ns.ObjectOn(obj4[0]) + ns.FrameTimerWithArg(1, nil, DisableAT) +} +func FireAT1() { + ns.ObjectOn(obj4[1]) + ns.FrameTimerWithArg(1, 1, DisableAT) +} +func FireAT2() { + ns.ObjectOn(obj4[2]) + ns.FrameTimerWithArg(1, 2, DisableAT) +} +func FireAT3() { + ns.ObjectOn(obj4[3]) + ns.FrameTimerWithArg(1, 3, DisableAT) +} +func FireAT4() { + ns.ObjectOn(obj4[4]) + ns.FrameTimerWithArg(1, 4, DisableAT) +} +func FireAT5() { + ns.ObjectOn(obj4[5]) + ns.FrameTimerWithArg(1, 5, DisableAT) +} +func FireAT6() { + ns.ObjectOn(obj4[6]) + ns.FrameTimerWithArg(1, 6, DisableAT) +} +func FireAT7() { + ns.ObjectOn(obj4[7]) + ns.FrameTimerWithArg(1, 7, DisableAT) +} +func FireAT8() { + ns.ObjectOn(obj4[8]) + ns.FrameTimerWithArg(1, 8, DisableAT) +} +func FireAT9() { + ns.ObjectOn(obj4[9]) + ns.FrameTimerWithArg(1, 9, DisableAT) +} +func FireAT10() { + ns.ObjectOn(obj4[10]) + ns.FrameTimerWithArg(1, 10, DisableAT) +} +func FireAT11() { + ns.ObjectOn(obj4[11]) + ns.FrameTimerWithArg(1, 11, DisableAT) +} +func FireAT17() { + ns.ObjectOn(obj4[17]) + ns.FrameTimerWithArg(1, 17, DisableAT) +} +func FireAT18() { + ns.ObjectOn(obj4[18]) + ns.FrameTimerWithArg(1, 18, DisableAT) +} +func FireAT19() { + ns.ObjectOn(obj4[19]) + ns.FrameTimerWithArg(1, 19, DisableAT) +} +func FireAT20() { + ns.ObjectOn(obj4[20]) + ns.FrameTimerWithArg(1, 20, DisableAT) +} +func FireATRow() { + ns.ObjectOn(obj4[12]) + ns.ObjectOn(obj4[13]) + ns.ObjectOn(obj4[14]) + ns.ObjectOn(obj4[15]) + ns.ObjectOn(obj4[16]) + ivar5 = 12 + for { + if !(ivar5 < 17) { + goto LABEL1 + } + ns.FrameTimerWithArg(1, ivar5, DisableAT) + ivar5 += 1 + } +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OrbLightOff() { + ns.ObjectOff(obj6) + ns.MoveObject(obj7, ns.GetWaypointX(wp8), ns.GetWaypointY(wp8)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj6, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj7, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp9, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj6) + ns.AudioEvent(ns.BallBounce, wp9) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func StairAccess2() { + if !(flag63 == true && flag64 == true) { + goto LABEL1 + } + ns.UnlockDoor(obj12) + ns.UnlockDoor(obj13) +LABEL1: + return +} +func CreateCherub() { + var v0 int + if !(ivar69 < 6) { + goto LABEL1 + } + v0 = ns.Random(0, 1) + obj24[ivar69] = ns.CreateObject("EvilCherub", wp43[v0]) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp43[v0]), ns.GetWaypointY(wp43[v0]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp43[v0]), ns.GetWaypointY(wp43[v0]), 0, 0) + ns.SetCallback(obj24[ivar69], 5, CreateCherub) + ns.SetRoamFlag(obj24[ivar69], 128) + ns.AggressionLevel(obj24[ivar69], 0.83) + ivar69 += 1 + goto LABEL2 +LABEL1: + return +LABEL2: + return +} +func WakeVKBat2() { + ns.ObjectOn(obj76[1]) +} +func PlayAction2Music() { + ns.Music(27, 100) +} +func CherubHostilize() { + ns.GroupAggressionLevel(gvar41, 0.83) +} +func OpenSecretRoom() { + ns.WallGroupOpen(gvar48) +} +func EnableTreasureLich1() { + ns.ObjectOn(obj14) +} +func AccessTreasureRoom1() { + ns.WallGroupOpen(gvar45) +} +func EnableTreasureLich2() { + ns.ObjectOn(obj15) +} +func AccessTreasureRoom2() { + ns.WallGroupOpen(gvar46) +} +func EnableTreasureMech() { + ns.ObjectOn(obj16) +} +func AccessTreasureRoom3() { + ns.WallGroupOpen(gvar47) +} +func EnableRoom() { + if !(ns.IsCaller(ns.GetHost()) && flag61 == false) { + goto LABEL1 + } + flag61 = true + ns.ObjectOn(obj27) +LABEL1: + return +} +func StairAccess1() { + ns.WallGroupOpen(gvar49) + ns.UnlockDoor(obj10) + ns.UnlockDoor(obj11) +} +func AllowAccess2() { + ns.PrintToAll("War10c:SentryDisabled") + ns.ObjectOff(obj21) + ns.ObjectOff(obj20) + ns.ObjectOff(obj19) + ns.AudioEvent(ns.Gear2, wp70) +} +func EnableRoom2() { + PlayAction2Music() + if !(ns.IsCaller(ns.GetHost()) && flag62 == false) { + goto LABEL1 + } + flag62 = true + ns.LockDoor(obj12) + ns.LockDoor(obj13) + ns.FrameTimer(800, CreateCherub) +LABEL1: + return +} +func OneDown() { + flag63 = true + ns.FrameTimer(1, StairAccess2) +} +func TwoDown() { + flag64 = true + ns.FrameTimer(1, StairAccess2) +} +func SwitchOffSentries() { + ns.ObjectOff(obj17) + ns.ObjectOff(obj18) + ns.UnlockDoor(obj12) + ns.UnlockDoor(obj13) +} +func SwitchOnSentries() { + ns.ObjectOn(obj17) + ns.ObjectOn(obj18) +} +func UnlockAccessDoors() { + ns.ObjectOff(obj31) + ns.UnlockDoor(obj25) + ns.UnlockDoor(obj26) +} +func OpenWall01() { + ns.WallGroupOpen(gvar55) + ns.AggressionLevel(obj42, 0.83) +} +func OpenWindowWall1() { + ns.WallGroupOpen(gvar56) +} +func CloseWindowWall1() { + ns.WallGroupClose(gvar56) +} +func OpenWindowWall2() { + ns.WallGroupOpen(gvar57) +} +func CloseWindowWall2() { + ns.WallGroupClose(gvar57) +} +func OpenCage1() { + ns.WallGroupOpen(gvar50) + ns.ObjectOn(obj28) +} +func OpenCage2() { + ns.WallGroupOpen(gvar51) + ns.ObjectOn(obj30) +} +func OpenCage3() { + ns.WallGroupOpen(gvar52) + ns.ObjectOn(obj29) +} +func OpenCage4() { + ns.WallGroupOpen(gvar53) + WakeVKBat2() +} +func OpenAccess() { + ns.WallGroupOpen(gvar54) +} +func CheckIdols() { + if !(flag65 == true && flag66 == true) { + goto LABEL1 + } + ns.ObjectGroupOn(gvar40) +LABEL1: + return +} +func BlueIdol() { + if !ns.IsCaller(obj32) { + goto LABEL1 + } + flag65 = true + CheckIdols() + ns.ObjectOff(obj38) + ns.ObjectOn(obj33) + ns.Delete(obj32) + ns.Delete(obj36) + ns.AudioEvent(ns.Gear2, wp60) +LABEL1: + return +} +func RedIdol() { + if !ns.IsCaller(obj34) { + goto LABEL1 + } + flag66 = true + CheckIdols() + ns.ObjectOff(obj39) + ns.ObjectOn(obj35) + ns.Delete(obj34) + ns.Delete(obj37) + ns.AudioEvent(ns.Gear2, wp60) +LABEL1: + return +} +func CheckSwitches() { + if !(flag67 == true && flag68 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar58) +LABEL1: + return +} +func ExitWallSwitch1() { + ns.AudioEvent(ns.Gear3, wp59) + flag67 = true + CheckSwitches() +} +func ExitWallSwitch2() { + ns.AudioEvent(ns.Gear3, wp59) + flag68 = true + CheckSwitches() +} +func InitializeVampireKnights() { + obj75[0] = ns.Object("VampireKnight1") + obj75[1] = ns.Object("VampireKnight2") + obj76[0] = ns.Object("VKBat1") + obj76[1] = ns.Object("VKBat2") + wp78 = ns.Waypoint("VKSpot") + wp79 = ns.Waypoint("VampireKnight1WP") + wp80 = ns.Waypoint("BatCreate") +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func MapInitialize() { + wp60 = ns.Waypoint("LichKeyAudioWP") + wp70 = ns.Waypoint("SentryAudioWP") + gvar41 = ns.ObjectGroup("CherubPitGroup") + obj6 = ns.Object("OrbLight") + obj7 = ns.Object("OrbEffect") + obj10 = ns.Object("ForceOrbDoorA") + obj11 = ns.Object("ForceOrbDoorB") + obj12 = ns.Object("ForceOrbDoorC") + obj13 = ns.Object("ForceOrbDoorD") + obj4[0] = ns.Object("AT0") + obj4[1] = ns.Object("AT1") + obj4[2] = ns.Object("AT2") + obj4[3] = ns.Object("AT3") + obj4[4] = ns.Object("AT4") + obj4[5] = ns.Object("AT5") + obj4[6] = ns.Object("AT6") + obj4[7] = ns.Object("AT7") + obj4[8] = ns.Object("AT8") + obj4[9] = ns.Object("AT9") + obj4[10] = ns.Object("AT10") + obj4[11] = ns.Object("AT11") + obj4[12] = ns.Object("AT12") + obj4[13] = ns.Object("AT13") + obj4[14] = ns.Object("AT14") + obj4[15] = ns.Object("AT15") + obj4[16] = ns.Object("AT16") + obj4[17] = ns.Object("AT17") + obj4[18] = ns.Object("AT18") + obj4[19] = ns.Object("AT19") + obj4[20] = ns.Object("AT20") + obj14 = ns.Object("TreasureLich1") + obj15 = ns.Object("TreasureLich2") + obj16 = ns.Object("TreasureMech") + obj27 = ns.Object("Necromancer1") + obj28 = ns.Object("Necromancer2") + obj29 = ns.Object("Necromancer3") + obj42 = ns.Object("Lich1") + obj71 = ns.Object("Lich2") + obj30 = ns.Object("Lich3") + obj17 = ns.Object("Sentry1") + obj18 = ns.Object("Sentry2") + obj19 = ns.Object("Sentry3") + obj20 = ns.Object("Sentry4") + obj21 = ns.Object("SentrySwitch") + obj22 = ns.Object("MainSentry1") + obj23 = ns.Object("MainSentry2") + obj25 = ns.Object("AccessDoorA") + obj26 = ns.Object("AccessDoorB") + obj31 = ns.Object("OpenDoors") + obj32 = ns.Object("BlueIdol") + obj34 = ns.Object("RedIdol") + obj33 = ns.Object("BlueIdolBase") + obj35 = ns.Object("RedIdolBase") + obj36 = ns.Object("BlueTrigger") + obj37 = ns.Object("RedTrigger") + obj38 = ns.Object("BlueIdolSentry") + obj39 = ns.Object("RedIdolSentry") + wp73[0] = ns.Waypoint("N1TeleWP0") + wp73[1] = ns.Waypoint("N1TeleWP1") + wp73[2] = ns.Waypoint("N1TeleWP2") + wp73[3] = ns.Waypoint("N1TeleWP3") + wp73[4] = ns.Waypoint("N1TeleWP4") + wp9 = ns.Waypoint("OrbSoundWP") + wp8 = ns.Waypoint("OrbEffectWP") + wp43[0] = ns.Waypoint("CherubCreate1") + wp43[1] = ns.Waypoint("CherubCreate2") + gvar72 = ns.ObjectGroup("VampTriggers") + gvar40 = ns.ObjectGroup("FinalLiches") + gvar45 = ns.WallGroup("TreasureRoom1Walls") + gvar46 = ns.WallGroup("TreasureRoom2Walls") + gvar47 = ns.WallGroup("TreasureRoom3Walls") + wp44 = ns.Waypoint("MechGolemAudioWP") + gvar48 = ns.WallGroup("SecretRoomWall") + gvar49 = ns.WallGroup("ForceOrbRoomWalls1") + gvar50 = ns.WallGroup("Cage1") + gvar51 = ns.WallGroup("Cage2") + gvar52 = ns.WallGroup("Cage3") + gvar53 = ns.WallGroup("Cage4") + gvar54 = ns.WallGroup("AccessTreasureRoom3") + gvar55 = ns.WallGroup("OpeningWall01") + gvar56 = ns.WallGroup("WindowWall1") + gvar57 = ns.WallGroup("WindowWall2") + gvar58 = ns.WallGroup("LichStairAccess") + wp74 = ns.Waypoint("Secret1AudioWP") + wp59 = ns.Waypoint("ExitAudioWP") + PlaySubMusic() + InitializeVampireKnights() + ns.LockDoor(obj25) + ns.LockDoor(obj26) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp74) +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func Necro1TeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp73[v2]) + v1 = ns.GetWaypointY(wp73[v2]) + ns.PauseObject(ns.GetTrigger(), 15) + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func SmackPlayer() { + r0 := ns.IsAttackedBy(ns.GetCaller(), ns.GetTrigger()) + if !r0 { + goto LABEL1 + } + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller())) +LABEL1: + return +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func BatToVampireKnight() { + if flag83 { + goto LABEL1 + } + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj75[0]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar81, fvar82, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar81, fvar82, 0, 0) + ns.Enchant(obj75[0], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj75[0], fvar81, fvar82) + ns.LookAtObject(obj75[0], ns.GetHost()) + flag83 = false +} +func BatToVampireKnight2() { + if flag83 { + goto LABEL1 + } + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj75[1]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar81, fvar82, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar81, fvar82, 0, 0) + ns.Enchant(obj75[1], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj75[1], fvar81, fvar82) + ns.LookAtObject(obj75[1], ns.GetHost()) +} +func SetRetreatBat() { + ns.AggressionLevel(obj77, 0.83) + ns.SetCallback(obj77, 7, BatDie) + ns.SetCallback(obj77, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + if !(ns.CurrentHealth(ns.GetTrigger()) <= 0) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveWaypoint(wp80, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(ns.GetTrigger(), ns.GetWaypointX(wp79), ns.GetWaypointY(wp79)) + ns.Delete(obj77) + ns.AudioEvent(ns.BurnCast, wp80) + v0 = ns.CreateObject("Flame", wp80) + v1 = ns.CreateObject("MediumFlame", wp80) + v2 = ns.CreateObject("SmallFlame", wp80) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 83) + ns.DeleteObjectTimer(v2, 85) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 250) +LABEL1: + return +} +func ChangeOnSight() { + if !flag84 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + if flag83 { + goto LABEL1 + } + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj75[0]) + ns.Damage(obj75[0], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag83 = true + ns.FrameTimer(1, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight2() { + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj75[1]) + ns.Damage(obj75[1], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag83 = true + ns.FrameTimer(1, BatToVampireKnight2) +} +func BatMove() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.SetCallback(ns.GetTrigger(), 4, ChangeOnSight) + ns.PauseObject(ns.GetTrigger(), 15) +LABEL1: + return +} +func VKDie() { + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp80, fvar81, fvar82) + obj77 = ns.CreateObject("Bat", wp80) + ns.FrameTimer(1, SetRetreatBat) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con10c/dummy_test.go b/examples/con10c/dummy_test.go new file mode 100644 index 0000000..408f82e --- /dev/null +++ b/examples/con10c/dummy_test.go @@ -0,0 +1,6 @@ +package con10c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con10d/con10d.go b/examples/con10d/con10d.go new file mode 100644 index 0000000..7b25493 --- /dev/null +++ b/examples/con10d/con10d.go @@ -0,0 +1,775 @@ +package con10d + +import ( + "github.com/noxworld-dev/noxscript/ns/v3" + "strconv" +) + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + gvar10 ns.WallGroupID + gvar11 ns.ObjectGroupID + gvar12 ns.ObjectGroupID + gvar13 ns.ObjectGroupID + gvar14 ns.WallGroupID + wp15 ns.WaypointID + wp16 ns.WaypointID + wp17 ns.WaypointID + wp18 ns.WaypointID + gvar19 ns.WallGroupID + gvar20 ns.ObjectGroupID + gvar21 ns.ObjectGroupID + gvar22 ns.ObjectGroupID + wp23 ns.WaypointID + wp24 ns.WaypointID + wp25 ns.WaypointID + obj26 ns.ObjectID + wp27 [32]ns.WaypointID + obj28 ns.ObjectID + gvar29 ns.WallGroupID + gvar30 [85]int + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.WallGroupID + gvar34 ns.WallGroupID + gvar35 ns.ObjectGroupID + obj36 ns.ObjectID + obj37 ns.ObjectID + flag38 bool + flag39 bool + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + wp44 ns.WaypointID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + gvar64 int + gvar65 int + gvar66 int + gvar67 int + gvar68 int + gvar69 int + gvar70 int + obj71 ns.ObjectID + wp72 [6]ns.WaypointID + gvar73 ns.WallGroupID + gvar74 int + gvar75 int + gvar76 int + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + obj80 ns.ObjectID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + gvar85 ns.WallGroupID + gvar86 ns.ObjectGroupID + gvar87 ns.ObjectGroupID + gvar88 ns.WallGroupID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + obj103 ns.ObjectID + obj104 ns.ObjectID + obj105 ns.ObjectID + obj106 ns.ObjectID + gvar107 ns.ObjectGroupID + gvar108 ns.ObjectGroupID + gvar109 ns.ObjectGroupID + gvar110 ns.ObjectGroupID + gvar111 ns.ObjectGroupID + gvar112 ns.ObjectGroupID + gvar113 ns.WallGroupID + gvar114 ns.WallGroupID + gvar115 ns.WallGroupID + flag116 bool + flag117 bool + flag118 bool + flag119 bool + gvar120 ns.ObjectGroupID + wp121 ns.WaypointID + wp122 ns.WaypointID + wp123 ns.WaypointID +) + +func init() { + gvar64 = 0 + gvar65 = 1 + gvar66 = 2 + gvar67 = 3 + gvar68 = 4 + gvar69 = 5 + gvar70 = gvar64 + gvar74 = 0 + gvar75 = 1 + gvar76 = gvar74 + flag38 = false + flag39 = false + flag116 = false + flag117 = false + flag118 = false + flag119 = false +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func EnableAllMonsters() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar11) + ns.ObjectGroupOn(gvar12) + ns.ObjectGroupOn(gvar13) +} +func FilterHecubah() int { + if !ns.IsCaller(obj9) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func ActivateSmokePuffs() { + var v0 int + v0 = 0 + for { + if !(v0 < 32) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp27[v0]), ns.GetWaypointY(wp27[v0]), 0, 0) + v0 += 2 + } +LABEL1: + return +} +func HecubahGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp17) + v1 = ns.GetWaypointY(wp17) + v2 = ns.GetWaypointX(wp18) + v3 = ns.GetWaypointY(wp18) + ns.CreatureGuard(obj9, v0, v1, v2, v3, 0) + ns.NoWallSound(true) + ns.WallGroupClose(gvar29) + ns.NoWallSound(false) +} +func EnableOrbMonsterGroup() { + ns.ObjectGroupOn(gvar11) + ns.ObjectGroupOn(gvar12) + ns.ObjectGroupOn(gvar13) + ns.Frozen(ns.GetHost(), false) + ns.WallGroupOpen(gvar10) + ns.FrameTimer(2, ActivateSmokePuffs) + ns.WallGroupClose(gvar14) + ns.Frozen(ns.GetHost(), false) +} +func HecubahExit() { + ns.Enchant(obj9, ns.ENCHANT_HASTED, 100) + ns.Move(obj9, wp17) + ns.WideScreen(false) + ns.FrameTimer(60, EnableOrbMonsterGroup) +} +func HecubahDialogEnd() { + ns.FrameTimer(30, HecubahExit) + ns.CancelDialog(obj9) +} +func HecubahDialogStart() { + ns.TellStory(ns.DemonRecognize, "Con07H.scr:HecubahTalk02") +} +func HecubahTrigger() { + ns.LookAtObject(obj9, ns.GetHost()) + ns.StoryPic(obj9, "HecubahPic") + ns.SetDialog(obj9, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj9, ns.GetHost()) +} +func HecubahEnter() { + ns.Move(obj9, wp16) +} +func HecubahWallsDown() { + ns.WallGroupOpen(gvar19) + ns.FrameTimer(1, HecubahEnter) +} +func GetOrb() { + ns.ObjectOff(obj8) + ns.ObjectGroupOff(gvar21) + ns.SetHalberd(3) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahWallsDown) + ns.ObjectGroupOff(gvar20) + ns.JournalEntry(ns.GetHost(), "War11Hecubah", 1) + ns.JournalEdit(ns.GetHost(), "War10aOrbQuest", 4) +} +func HecubahVanish1() { + ns.ObjectOn(obj26) + ns.ObjectGroupOff(gvar22) + ns.Move(obj9, wp23) + ns.AudioEvent(ns.HecubahTaunt, wp17) + ns.WideScreen(false) + ns.FrameTimer(60, EnableAllMonsters) +} +func HecubahTakesOff() { + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahVanish1) + ns.ObjectGroupOff(gvar11) + ns.ObjectGroupOff(gvar12) + ns.ObjectGroupOff(gvar13) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar29) + ns.NoWallSound(false) +} +func HecubahVanish2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp24) + v1 = ns.GetWaypointY(wp24) + v2 = ns.GetWaypointX(wp23) + v3 = ns.GetWaypointY(wp23) + ns.Effect(ns.SMOKE_BLAST, v2, v3, 0, 0) + ns.AudioEvent(ns.TeleportOut, wp23) + ns.MoveObject(obj9, v0, v1) + ns.ObjectOn(obj28) +} +func MapSwitch() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp25) + v1 = ns.GetWaypointY(wp25) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), v0, v1) +} +func EnableMonsterGroup2() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectGroupOn(gvar12) +LABEL1: + return +} +func EnableMonsterGroup3() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectGroupOn(gvar13) +LABEL1: + return +} +func PlayerFadeOut() { + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(60, MapSwitch) +} +func TeleportPlayer() { + ns.Blind() + ns.Frozen(ns.GetHost(), true) +} +func DestroyMe() { + ns.Delete(ns.GetCaller()) +} +func LichWallsDown2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + v10 float32 + v11 float32 + v12 float32 + v13 float32 + v14 float32 + v15 float32 + ) + v0 = ns.GetWaypointX(wp48) + v1 = ns.GetWaypointY(wp48) + v2 = ns.GetWaypointX(wp49) + v3 = ns.GetWaypointY(wp49) + v4 = ns.GetWaypointX(wp50) + v5 = ns.GetWaypointY(wp50) + v6 = ns.GetWaypointX(wp51) + v7 = ns.GetWaypointY(wp51) + v8 = ns.GetWaypointX(wp52) + v9 = ns.GetWaypointY(wp52) + v10 = ns.GetWaypointX(wp53) + v11 = ns.GetWaypointY(wp53) + v12 = ns.GetWaypointX(wp54) + v13 = ns.GetWaypointY(wp54) + v14 = ns.GetWaypointX(wp55) + v15 = ns.GetWaypointY(wp55) + ns.WallGroupOpen(gvar34) + ns.ObjectGroupOn(gvar35) + ns.ObjectGroupOn(gvar32) + ns.FrameTimer(1, LichMove) + ns.Effect(ns.SMOKE_BLAST, v0, v1, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v2, v3, v2, v3) + ns.Effect(ns.SMOKE_BLAST, v4, v5, v4, v5) + ns.Effect(ns.SMOKE_BLAST, v6, v7, v6, v7) + ns.Effect(ns.SMOKE_BLAST, v8, v9, v8, v9) + ns.Effect(ns.SMOKE_BLAST, v10, v11, v10, v11) + ns.Effect(ns.SMOKE_BLAST, v12, v13, v12, v13) + ns.Effect(ns.SMOKE_BLAST, v14, v15, v14, v15) +} +func LichDieCheck() { + if !(flag38 && flag39) { + goto LABEL1 + } + LichWallsDown2() +LABEL1: + return +} +func LichDie1() { + flag38 = true + LichDieCheck() +} +func LichDie2() { + flag39 = true + LichDieCheck() +} +func LichMove() { + ns.Move(obj36, wp56) + ns.Move(obj37, wp57) +} +func LichWallsDown() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + v10 float32 + v11 float32 + v12 float32 + v13 float32 + v14 float32 + v15 float32 + ) + v0 = ns.GetWaypointX(wp40) + v1 = ns.GetWaypointY(wp40) + v2 = ns.GetWaypointX(wp41) + v3 = ns.GetWaypointY(wp41) + v4 = ns.GetWaypointX(wp42) + v5 = ns.GetWaypointY(wp42) + v6 = ns.GetWaypointX(wp43) + v7 = ns.GetWaypointY(wp43) + v8 = ns.GetWaypointX(wp44) + v9 = ns.GetWaypointY(wp44) + v10 = ns.GetWaypointX(wp45) + v11 = ns.GetWaypointY(wp45) + v12 = ns.GetWaypointX(wp46) + v13 = ns.GetWaypointY(wp46) + v14 = ns.GetWaypointX(wp47) + v15 = ns.GetWaypointY(wp47) + ns.WallGroupOpen(gvar33) + ns.ObjectGroupOn(gvar31) + ns.Effect(ns.SMOKE_BLAST, v0, v1, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v2, v3, v2, v3) + ns.Effect(ns.SMOKE_BLAST, v4, v5, v4, v5) + ns.Effect(ns.SMOKE_BLAST, v6, v7, v6, v7) + ns.Effect(ns.SMOKE_BLAST, v8, v9, v8, v9) + ns.Effect(ns.SMOKE_BLAST, v10, v11, v10, v11) + ns.Effect(ns.SMOKE_BLAST, v12, v13, v12, v13) + ns.Effect(ns.SMOKE_BLAST, v14, v15, v14, v15) +} +func SentryRun() { + var v0 int + v0 = gvar70 + if v0 == gvar64 { + goto LABEL1 + } + if v0 == gvar65 { + goto LABEL2 + } + if v0 == gvar66 { + goto LABEL3 + } + if v0 == gvar67 { + goto LABEL4 + } + if v0 == gvar68 { + goto LABEL5 + } + if v0 == gvar69 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.ObjectOff(obj58) + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.ObjectOff(obj63) + ns.FrameTimer(25, SentryRun) + gvar70 = gvar65 + goto LABEL7 +LABEL2: + ns.ObjectOn(obj58) + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOff(obj62) + ns.ObjectOn(obj63) + ns.FrameTimer(25, SentryRun) + gvar70 = gvar66 + goto LABEL7 +LABEL3: + ns.ObjectOn(obj58) + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.ObjectOff(obj61) + ns.ObjectOn(obj62) + ns.ObjectOn(obj63) + ns.FrameTimer(25, SentryRun) + gvar70 = gvar67 + goto LABEL7 +LABEL4: + ns.ObjectOn(obj58) + ns.ObjectOn(obj59) + ns.ObjectOff(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.ObjectOn(obj63) + ns.FrameTimer(25, SentryRun) + gvar70 = gvar68 + goto LABEL7 +LABEL5: + ns.ObjectOn(obj58) + ns.ObjectOff(obj59) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.ObjectOn(obj63) + ns.FrameTimer(25, SentryRun) + gvar70 = gvar69 + goto LABEL7 +LABEL6: + ns.ObjectOn(obj58) + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.ObjectOn(obj63) + ns.FrameTimer(25, SentryRun) + gvar70 = gvar64 + goto LABEL7 +LABEL7: + return +} +func LLDies() { + gvar76 = gvar75 +} +func OpenLLWallGroup() { + ns.WallGroupOpen(gvar73) +} +func Ghost1Face() { + ns.LookAtObject(obj71, ns.GetHost()) +} +func Ghost2Face() { + ns.LookAtObject(obj71, ns.GetHost()) +} +func PlayAction2Music() { + ns.Music(27, 100) +} +func MapInitialize() { + var v0 int + gvar31 = ns.ObjectGroup("LichGroup") + gvar32 = ns.ObjectGroup("LichGroup2") + gvar33 = ns.WallGroup("LichWallGroup") + gvar34 = ns.WallGroup("LichWallGroup2") + gvar35 = ns.ObjectGroup("LichElevatorGroup") + obj36 = ns.Object("Lich1") + obj37 = ns.Object("Lich2") + wp40 = ns.Waypoint("DestroyWP1") + wp41 = ns.Waypoint("DestroyWP2") + wp42 = ns.Waypoint("DestroyWP3") + wp43 = ns.Waypoint("DestroyWP4") + wp44 = ns.Waypoint("DestroyWP5") + wp45 = ns.Waypoint("DestroyWP6") + wp46 = ns.Waypoint("DestroyWP7") + wp47 = ns.Waypoint("DestroyWP8") + wp48 = ns.Waypoint("DestroyWP1a") + wp49 = ns.Waypoint("DestroyWP2a") + wp50 = ns.Waypoint("DestroyWP3a") + wp51 = ns.Waypoint("DestroyWP4a") + wp52 = ns.Waypoint("DestroyWP5a") + wp53 = ns.Waypoint("DestroyWP6a") + wp54 = ns.Waypoint("DestroyWP7a") + wp55 = ns.Waypoint("DestroyWP8a") + wp56 = ns.Waypoint("LichWP1") + wp57 = ns.Waypoint("LichWP2") + obj58 = ns.Object("Sentry1") + obj59 = ns.Object("Sentry2") + obj60 = ns.Object("Sentry3") + obj61 = ns.Object("Sentry4") + obj62 = ns.Object("Sentry5") + obj63 = ns.Object("Sentry6") + SentryRun() + obj71 = ns.Object("LLGhost") + wp72[0] = ns.Waypoint("LLGhostWP1") + wp72[1] = ns.Waypoint("LLGhostWP2") + wp72[2] = ns.Waypoint("LLGhostWP3") + wp72[3] = ns.Waypoint("LLGhostWP4") + wp72[4] = ns.Waypoint("LLGhostWP5") + wp72[5] = ns.Waypoint("LLGhostWP6") + gvar73 = ns.WallGroup("LLWallGroup") + obj77 = ns.Object("Spike1") + obj78 = ns.Object("Spike2") + obj79 = ns.Object("Spike3") + obj80 = ns.Object("Spike4") + wp81 = ns.Waypoint("Spike1WP") + wp82 = ns.Waypoint("Spike2WP") + wp83 = ns.Waypoint("Spike3WP") + wp84 = ns.Waypoint("Spike4WP") + gvar85 = ns.WallGroup("SpikeWallGroup") + gvar86 = ns.ObjectGroup("SpikeWallTrigGroup") + gvar87 = ns.ObjectGroup("CherubGroup") + gvar88 = ns.WallGroup("CherubWallGroup") + obj89 = ns.Object("Cherub1") + obj90 = ns.Object("Cherub2") + obj91 = ns.Object("Cherub3") + obj92 = ns.Object("Cherub4") + obj93 = ns.Object("Cherub5") + obj94 = ns.Object("Cherub6") + obj95 = ns.Object("Cherub7") + obj96 = ns.Object("Cherub8") + obj97 = ns.Object("Cherub9") + obj98 = ns.Object("Cherub10") + gvar107 = ns.ObjectGroup("SentryGroup1") + gvar108 = ns.ObjectGroup("SentryGroup2") + gvar109 = ns.ObjectGroup("SentryGroup3") + gvar110 = ns.ObjectGroup("SentryGroup4") + obj99 = ns.Object("Sentry1L") + obj100 = ns.Object("Sentry1R") + obj101 = ns.Object("Sentry2L") + obj102 = ns.Object("Sentry2R") + obj103 = ns.Object("Sentry3L") + obj104 = ns.Object("Sentry3R") + obj105 = ns.Object("Sentry4L") + obj106 = ns.Object("Sentry4R") + gvar112 = ns.ObjectGroup("OrbTriggerGroup") + gvar111 = ns.ObjectGroup("SentryMonsterGroup") + gvar113 = ns.WallGroup("OrbWallGroup1") + gvar114 = ns.WallGroup("OrbWallGroup2") + gvar115 = ns.WallGroup("OrbWallGroup3") + gvar14 = ns.WallGroup("OrbWallGroup4") + wp121 = ns.Waypoint("OrbXPWP") + gvar120 = ns.ObjectGroup("OrbXPTrigGroup") + obj4 = ns.Object("Group2AlertA") + obj5 = ns.Object("Group2AlertB") + obj6 = ns.Object("Group3AlertA") + obj7 = ns.Object("Group3AlertB") + obj8 = ns.Object("OrbPool1") + obj9 = ns.Object("Hecubah") + gvar11 = ns.ObjectGroup("OrbMonsterGroup") + gvar12 = ns.ObjectGroup("OrbMonsterGroup2") + gvar13 = ns.ObjectGroup("OrbMonsterGroup3") + gvar10 = ns.WallGroup("OrbWallGroupFinal") + wp15 = ns.Waypoint("OrbAudioWP") + gvar19 = ns.WallGroup("HecubahWallGroup") + wp16 = ns.Waypoint("HecubahEnterWP") + wp17 = ns.Waypoint("HecubahExitWP") + wp18 = ns.Waypoint("HecubahLookWP") + gvar20 = ns.ObjectGroup("OrbSoundGroup") + gvar21 = ns.ObjectGroup("OrbPoolTrigGroup") + gvar22 = ns.ObjectGroup("HecubahVanishTrigGroup") + wp23 = ns.Waypoint("HecubahVanishWP") + wp24 = ns.Waypoint("HecubahEndWP") + wp25 = ns.Waypoint("MapSwitchWP") + obj26 = ns.Object("HecubahEndTrig") + obj28 = ns.Object("ExitTeleporter") + wp122 = ns.Waypoint("Secret1AudioWP") + wp123 = ns.Waypoint("Secret2AudioWP") + gvar29 = ns.WallGroup("InvisibleWallGroup") + ns.WallGroupOpen(gvar29) + PlayAction2Music() + v0 = 0 + for { + if !(v0 < 32) { + goto LABEL1 + } + wp27[v0] = ns.Waypoint("SmokeWP" + strconv.Itoa(v0+1)) + v0 += 1 + } +LABEL1: + return +} +func OrbXP() { + ns.ObjectGroupOff(gvar120) + ns.AudioEvent(ns.FlagDrop, wp121) + ns.GiveXp(ns.GetHost(), 2000) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp122) +} +func Secret200XP() { + ns.GiveXp(ns.GetHost(), 200) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp123) +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func PlayOrbMusic() { + ns.Music(12, 100) +} +func SpikeMove() { + ns.ObjectGroupOff(gvar86) + ns.AudioEvent(ns.SpikeBlockMove, wp83) + ns.WallGroupOpen(gvar85) + ns.Move(obj77, wp81) + ns.Move(obj78, wp82) + ns.Move(obj79, wp83) + ns.Move(obj80, wp84) + PlayAction3Music() +} +func OpenOrbWallGroup1() { + if !(!ns.IsObjectOn(obj99) && !ns.IsObjectOn(obj100) && !ns.IsObjectOn(obj101) && !ns.IsObjectOn(obj102) && !ns.IsObjectOn(obj103) && !ns.IsObjectOn(obj104) && !ns.IsObjectOn(obj105) && !ns.IsObjectOn(obj106)) { + goto LABEL1 + } + ns.WallGroupOpen(gvar113) +LABEL1: + return +} +func ToggleSG1() { + ns.ObjectGroupToggle(gvar107) + OpenOrbWallGroup1() +} +func EnableSG1() { + ns.ObjectGroupOn(gvar107) +} +func ToggleSG2() { + ns.ObjectGroupToggle(gvar108) + OpenOrbWallGroup1() +} +func EnableSG2() { + ns.ObjectGroupOn(gvar108) +} +func ToggleSG3() { + ns.ObjectGroupToggle(gvar109) + OpenOrbWallGroup1() +} +func EnableSG3() { + ns.ObjectGroupOn(gvar109) +} +func ToggleSG4() { + ns.ObjectGroupToggle(gvar110) + OpenOrbWallGroup1() +} +func EnableSG4() { + ns.ObjectGroupOn(gvar110) +} +func OpenOrbWallGroup2() { + ns.WallGroupOpen(gvar114) + ns.ObjectGroupOn(gvar111) + ns.ObjectGroupOn(gvar87) + ns.WallGroupOpen(gvar88) +} +func OpenOrbWallGroup3() { + ns.WallGroupOpen(gvar115) +} +func OpenOrbWallGroup4() { + ns.WallGroupOpen(gvar14) + ns.ObjectGroupOff(gvar112) + ns.ObjectGroupOff(gvar107) + ns.ObjectGroupOff(gvar108) + ns.ObjectGroupOff(gvar109) + ns.ObjectGroupOff(gvar110) +} +func BossDieCheck() { + if !(flag116 && flag117 && flag118 && flag119) { + goto LABEL1 + } + OpenOrbWallGroup3() +LABEL1: + return +} +func BossDie1() { + flag116 = true + BossDieCheck() +} +func BossDie2() { + flag117 = true + BossDieCheck() +} +func BossDie3() { + flag118 = true + BossDieCheck() +} +func BossDie4() { + flag119 = true + BossDieCheck() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con10d/dummy_test.go b/examples/con10d/dummy_test.go new file mode 100644 index 0000000..803e66c --- /dev/null +++ b/examples/con10d/dummy_test.go @@ -0,0 +1,6 @@ +package con10d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/con11a/con11a.go b/examples/con11a/con11a.go new file mode 100644 index 0000000..3bc91ba --- /dev/null +++ b/examples/con11a/con11a.go @@ -0,0 +1,519 @@ +package con11a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + gvar31 ns.ObjectGroupID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + wp44 ns.WaypointID + gvar45 ns.WaypointGroupID + gvar46 ns.WaypointGroupID + gvar47 ns.WaypointGroupID + gvar48 int + flag49 bool + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + gvar54 ns.ObjectGroupID + gvar55 ns.ObjectGroupID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + wp59 ns.WaypointID + wp60 ns.WaypointID + wp61 ns.WaypointID + wp62 ns.WaypointID + wp63 ns.WaypointID + wp64 ns.WaypointID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID + wp69 ns.WaypointID + wp70 ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + wp73 ns.WaypointID + wp74 ns.WaypointID + wp75 ns.WaypointID + wp76 ns.WaypointID + wp77 ns.WaypointID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + wp90 ns.WaypointID + wp91 ns.WaypointID + wp92 ns.WaypointID + wp93 ns.WaypointID + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + wp97 ns.WaypointID + flag98 bool + gvar99 ns.WaypointGroupID +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + gvar48 = gvar4 + flag49 = false + flag98 = false +} +func SwampGuards() { + ns.ObjectGroupOn(gvar31) + ns.AggressionLevel(obj10, 0.83) + ns.AggressionLevel(obj11, 0.83) + ns.Move(obj12, wp35) + ns.Move(obj13, wp36) + ns.Move(obj14, wp37) + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) +} +func HecTalk() { + ns.WayPointGroupOn(gvar47) + ns.SetDialog(obj9, ns.NORMAL, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj9, ns.GetHost()) +} +func HecDie() { + ns.Blind() + ns.Frozen(obj9, true) + ns.Frozen(ns.GetHost(), true) + ns.Music(0, 100) + ns.MoveWaypoint(wp41, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + ns.AudioEvent(ns.HecubahDieFrame0A, wp41) + ns.FrameTimer(45, HecDie2) +} +func HecDie2() { + ns.Frozen(obj9, false) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(obj9, ns.GetWaypointX(wp39), ns.GetWaypointY(wp39)) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp40), ns.GetWaypointY(wp40)) + ns.WideScreen(true) + ns.FrameTimer(1, HecDie3) +} +func HecDie3() { + ns.UnBlind() + ns.LookAtObject(ns.GetHost(), obj9) + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj9, true) + ns.FrameTimer(30, HecDie4) +} +func HecDie4() { + ns.Frozen(obj9, false) + ns.FrameTimer(67, HecubahDie1) + ns.FrameTimer(131, HecubahDie2) + ns.FrameTimer(171, HecubahDie3) + ns.FrameTimer(281, HecubahDie4) + ns.FrameTimer(440, TheEnd1) +} +func TheEnd1() { + ns.EndGame(2) +} +func HecubahDie1() { + ns.AudioEvent(ns.HecubahDieFrame98, wp39) +} +func HecubahDie2() { + ns.AudioEvent(ns.HecubahDieFrame194, wp39) +} +func HecubahDie3() { + ns.AudioEvent(ns.HecubahDieFrame283, wp39) +} +func HecubahDie4() { + ns.AudioEvent(ns.HecubahDieFrame439, wp39) +} +func HecubahDialogStart() { + var v0 int + v0 = gvar48 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + if v0 == gvar7 { + goto LABEL4 + } + if v0 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.LookAtObject(obj9, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj9) + ns.TellStory(ns.SwordsmanHurt, "Con10B.scr:HecubahDialog2") + goto LABEL6 +LABEL2: + ns.LookAtObject(obj9, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj9) + ns.TellStory(ns.SwordsmanHurt, "Con10B.scr:HecubahLine1") + goto LABEL6 +LABEL3: + ns.LookAtObject(obj9, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj9) + ns.TellStory(ns.SwordsmanHurt, "Con10B.scr:HecubahLine3") + goto LABEL6 +LABEL4: + ns.LookAtObject(ns.GetHost(), obj9) + ns.TellStory(ns.SwordsmanHurt, "Con10B.scr:HecubahLine16") + goto LABEL6 +LABEL5: + ns.TellStory(ns.SwordsmanHurt, "Con10B.scr:HecubahDefeat6") + goto LABEL6 +LABEL6: + return +} +func HecubahDialogEnd() { + var v0 int + v0 = gvar48 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + if v0 == gvar7 { + goto LABEL4 + } + if v0 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + gvar48 = gvar5 + ns.SetDialog(obj9, ns.NORMAL, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj9, ns.GetHost()) + goto LABEL6 +LABEL2: + gvar48 = gvar6 + ns.CancelDialog(obj9) + ns.Enchant(obj9, ns.ENCHANT_INVISIBLE, 3) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(obj9), ns.GetObjectY(obj9), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj9), ns.GetObjectY(obj9), 0, 0) + ns.MoveObject(obj9, ns.GetWaypointX(wp34), ns.GetWaypointY(wp34)) + SwampGuards() + goto LABEL6 +LABEL3: + gvar48 = gvar7 + ns.CancelDialog(obj9) + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.AggressionLevel(obj9, 0.83) + ns.CastSpellObjectObject(ns.SPELL_BLINK, obj9, obj9) + goto LABEL6 +LABEL4: + ns.FrameTimer(310, TheEnd1) + goto LABEL6 +LABEL5: + goto LABEL6 +LABEL6: + return +} +func GreetPlayer1() { + ns.ObjectOff(ns.GetTrigger()) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.Move(obj9, wp32) +} +func GreetPlayer2() { + if !ns.IsCaller(obj9) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.StartDialog(obj9, ns.GetHost()) +LABEL1: + return +} +func WarnPlayer() { + if !(ns.IsCaller(ns.GetHost()) && flag49 == false) { + goto LABEL1 + } + flag49 = true + ns.WayPointGroupOff(gvar45) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.Move(obj9, wp38) + ns.FrameTimer(45, HecTalk) +LABEL1: + return +} +func BlinkLimit() { + ns.WayPointGroupOff(gvar45) + ns.WayPointGroupOn(gvar46) +} +func HecBlink() { + if !(ns.IsCaller(obj15) || ns.IsCaller(obj16) || ns.IsCaller(obj17) || ns.IsCaller(obj18) || ns.IsCaller(obj19) || ns.IsCaller(obj20) || ns.IsCaller(obj21) || ns.IsCaller(obj22) || ns.IsCaller(obj23) || ns.IsCaller(obj24) || ns.IsCaller(obj25) || ns.IsCaller(obj26) || ns.IsCaller(obj27) || ns.IsCaller(obj28) || ns.IsCaller(obj29) || ns.IsCaller(obj30)) { + goto LABEL1 + } + ns.CastSpellObjectObject(ns.SPELL_BLINK, obj9, obj9) +LABEL1: + return +} +func MoveBlocksOut() { + ns.Move(obj15, wp57) + ns.Move(obj16, wp58) + ns.Move(obj17, wp59) + ns.Move(obj18, wp60) + ns.Move(obj19, wp61) + ns.Move(obj20, wp62) + ns.Move(obj21, wp63) + ns.Move(obj22, wp64) + ns.Move(obj23, wp65) + ns.Move(obj24, wp66) + ns.Move(obj25, wp67) + ns.Move(obj26, wp68) + ns.FrameTimer(120, MoveBlocksHome) +} +func MoveBlocksHome() { + if !flag98 { + goto LABEL1 + } + ns.Move(obj15, wp69) + ns.Move(obj16, wp70) + ns.Move(obj17, wp71) + ns.Move(obj18, wp72) + ns.Move(obj19, wp73) + ns.Move(obj20, wp74) + ns.Move(obj21, wp75) + ns.Move(obj22, wp76) + ns.Move(obj23, wp77) + ns.Move(obj24, wp78) + ns.Move(obj25, wp79) + ns.Move(obj26, wp80) + ns.FrameTimer(120, MoveBlocksOut) + goto LABEL2 +LABEL1: + return +LABEL2: + return +} +func ReopenSet1() { + ns.ObjectGroupOn(gvar54) + ns.Move(obj27, wp89) + ns.Move(obj50, wp90) + ns.Move(obj28, wp91) + ns.Move(obj51, wp92) +} +func ReopenSet2() { + ns.ObjectGroupOn(gvar55) + ns.Move(obj29, wp93) + ns.Move(obj52, wp94) + ns.Move(obj30, wp95) + ns.Move(obj53, wp96) +} +func CrashAndRumble() { + ns.MoveWaypoint(wp56, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.HammerMissing, wp56) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) +} +func Secret01Declare() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp97, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp97) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 1000) +} +func CloseSet1() { + ns.ObjectGroupOff(gvar54) + ns.Move(obj27, wp81) + ns.Move(obj50, wp82) + ns.Move(obj28, wp83) + ns.Move(obj51, wp84) + ns.FrameTimer(16, CrashAndRumble) + ns.FrameTimer(75, ReopenSet1) +} +func CloseSet2() { + ns.ObjectGroupOff(gvar55) + ns.Move(obj29, wp85) + ns.Move(obj52, wp86) + ns.Move(obj30, wp87) + ns.Move(obj53, wp88) + ns.FrameTimer(16, CrashAndRumble) + ns.FrameTimer(75, ReopenSet2) +} +func NearBlocks() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag98 = true +LABEL1: + MoveBlocksOut() +} +func FarFromBlocks() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag98 = false +LABEL1: + return +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(11) +} +func MapInitialize() { + obj9 = ns.Object("Hecubah") + obj10 = ns.Object("Guard1") + obj11 = ns.Object("Guard2") + obj12 = ns.Object("GuardA") + obj13 = ns.Object("GuardB") + obj14 = ns.Object("GuardC") + obj15 = ns.Object("BlockA1") + obj16 = ns.Object("BlockA2") + obj17 = ns.Object("BlockA3") + obj18 = ns.Object("BlockB1") + obj19 = ns.Object("BlockB2") + obj20 = ns.Object("BlockB3") + obj21 = ns.Object("BlockC1") + obj22 = ns.Object("BlockC2") + obj23 = ns.Object("BlockC3") + obj24 = ns.Object("BlockD1") + obj25 = ns.Object("BlockD2") + obj26 = ns.Object("BlockD3") + obj27 = ns.Object("DoorBlock1") + obj50 = ns.Object("DoorBlock2") + obj28 = ns.Object("DoorBlock3") + obj51 = ns.Object("DoorBlock4") + obj29 = ns.Object("DoorBlock5") + obj52 = ns.Object("DoorBlock6") + obj30 = ns.Object("DoorBlock7") + obj53 = ns.Object("DoorBlock8") + gvar31 = ns.ObjectGroup("GuardGroup1") + gvar54 = ns.ObjectGroup("TriggerSet1") + gvar55 = ns.ObjectGroup("TriggerSet2") + wp32 = ns.Waypoint("HecWP1") + wp41 = ns.Waypoint("HecSounds") + wp33 = ns.Waypoint("HecLeaveWP") + wp34 = ns.Waypoint("HecTeleport") + wp35 = ns.Waypoint("GuardAWP") + wp36 = ns.Waypoint("GuardBWP") + wp37 = ns.Waypoint("GuardCWP") + wp38 = ns.Waypoint("HecWarning") + wp39 = ns.Waypoint("FinalHecubahWP") + wp40 = ns.Waypoint("FinalPlayerWP") + wp56 = ns.Waypoint("SoundSource") + wp97 = ns.Waypoint("PlayerSounds") + wp57 = ns.Waypoint("A1Out") + wp58 = ns.Waypoint("A2Out") + wp59 = ns.Waypoint("A3Out") + wp60 = ns.Waypoint("B1Out") + wp61 = ns.Waypoint("B2Out") + wp62 = ns.Waypoint("B3Out") + wp63 = ns.Waypoint("C1Out") + wp64 = ns.Waypoint("C2Out") + wp65 = ns.Waypoint("C3Out") + wp66 = ns.Waypoint("D1Out") + wp67 = ns.Waypoint("D2Out") + wp68 = ns.Waypoint("D3Out") + wp69 = ns.Waypoint("A1Home") + wp70 = ns.Waypoint("A2Home") + wp71 = ns.Waypoint("A3Home") + wp72 = ns.Waypoint("B1Home") + wp73 = ns.Waypoint("B2Home") + wp74 = ns.Waypoint("B3Home") + wp75 = ns.Waypoint("C1Home") + wp76 = ns.Waypoint("C2Home") + wp77 = ns.Waypoint("C3Home") + wp78 = ns.Waypoint("D1Home") + wp79 = ns.Waypoint("D2Home") + wp80 = ns.Waypoint("D3Home") + wp81 = ns.Waypoint("Close1") + wp82 = ns.Waypoint("Close2") + wp83 = ns.Waypoint("Close3") + wp84 = ns.Waypoint("Close4") + wp85 = ns.Waypoint("Close5") + wp86 = ns.Waypoint("Close6") + wp87 = ns.Waypoint("Close7") + wp88 = ns.Waypoint("Close8") + wp89 = ns.Waypoint("Open1") + wp90 = ns.Waypoint("Open2") + wp91 = ns.Waypoint("Open3") + wp92 = ns.Waypoint("Open4") + wp93 = ns.Waypoint("Open5") + wp94 = ns.Waypoint("Open6") + wp95 = ns.Waypoint("Open7") + wp96 = ns.Waypoint("Open8") + wp42 = ns.Waypoint("EditWP1") + wp43 = ns.Waypoint("EditWP2") + wp44 = ns.Waypoint("EditWP3") + gvar45 = ns.WaypointGroup("AllSearchWPs") + gvar99 = ns.WaypointGroup("SwampSearchWPs") + gvar46 = ns.WaypointGroup("LessonSearchWPs") + gvar47 = ns.WaypointGroup("DungeonSearchWPs") + ns.StoryPic(obj9, "HecubahPic") + ns.SetDialog(obj9, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.WayPointGroupOff(gvar45) + ns.WayPointGroupOn(gvar99) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/con11a/dummy_test.go b/examples/con11a/dummy_test.go new file mode 100644 index 0000000..607d8b5 --- /dev/null +++ b/examples/con11a/dummy_test.go @@ -0,0 +1,6 @@ +package con11a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war01a/dummy_test.go b/examples/war01a/dummy_test.go new file mode 100644 index 0000000..b255223 --- /dev/null +++ b/examples/war01a/dummy_test.go @@ -0,0 +1,6 @@ +package war01a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war01a/war01a.go b/examples/war01a/war01a.go new file mode 100644 index 0000000..de54641 --- /dev/null +++ b/examples/war01a/war01a.go @@ -0,0 +1,1856 @@ +package war01a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + flag4 bool + flag5 bool + flag6 bool + flag7 bool + flag8 bool + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + gvar18 ns.ObjectGroupID + gvar19 ns.ObjectGroupID + gvar20 ns.ObjectGroupID + gvar21 ns.ObjectGroupID + wp22 ns.WaypointID + ivar23 int + ivar24 int + gvar25 int + flag26 bool + flag27 bool + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + ivar35 int + flag36 bool + flag37 bool + flag38 bool + obj39 ns.ObjectID + gvar40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + gvar73 ns.ObjectID + gvar74 ns.ObjectGroupID + gvar75 ns.ObjectGroupID + gvar76 ns.ObjectGroupID + gvar77 ns.ObjectGroupID + gvar78 ns.ObjectGroupID + gvar79 ns.ObjectGroupID + gvar80 ns.ObjectGroupID + gvar81 ns.ObjectGroupID + flag82 bool + flag83 bool + flag84 bool + flag85 bool + flag86 bool + flag87 bool + flag88 bool + gvar89 int + ivar90 int + wp91 ns.WaypointID + wp92 ns.WaypointID + flag93 bool + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + obj103 ns.ObjectID + obj104 ns.ObjectID + obj105 ns.ObjectID + obj106 ns.ObjectID + obj107 ns.ObjectID + obj108 ns.ObjectID + obj109 ns.ObjectID + obj110 ns.ObjectID + obj111 ns.ObjectID + obj112 ns.ObjectID + obj113 ns.ObjectID + obj114 ns.ObjectID + obj115 ns.ObjectID + obj116 ns.ObjectID + obj117 ns.ObjectID + gvar118 ns.ObjectID + obj119 ns.ObjectID + obj120 ns.ObjectID + gvar121 ns.ObjectGroupID + gvar122 ns.ObjectGroupID + gvar123 ns.WallGroupID + wp124 ns.WaypointID + gvar125 ns.WaypointGroupID + gvar126 int + gvar127 int + gvar128 int + gvar129 int + gvar130 int + gvar131 int + gvar132 int + gvar133 int + ivar134 int + flag135 bool + obj136 ns.ObjectID + obj137 ns.ObjectID + obj138 ns.ObjectID + obj139 ns.ObjectID + obj140 ns.ObjectID + obj141 ns.ObjectID + wp142 ns.WaypointID + wp143 ns.WaypointID + wp144 ns.WaypointID + wp145 ns.WaypointID + wp146 ns.WaypointID +) + +func init() { + flag4 = true + flag5 = false + flag6 = false + ivar23 = 0 + ivar24 = 0 + ivar35 = 0 + flag36 = true + flag82 = false + flag8 = false + flag83 = true + flag84 = true + flag85 = false + flag86 = false + flag87 = false + flag26 = false + gvar89 = 1 + ivar90 = 1 + flag37 = false + flag7 = false + flag88 = false + flag38 = false + flag27 = false + flag93 = true + gvar25 = 1 + gvar126 = 0 + gvar127 = 1 + gvar128 = 2 + gvar129 = 3 + gvar130 = 4 + gvar131 = 5 + gvar132 = 6 + gvar133 = gvar126 + ivar134 = 0 + flag135 = false +} +func GHStart6() { + ns.LookAtObject(obj16, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GearhartTalk06") +} +func GHEnd6() { + ns.SetDialog(obj16, ns.NORMAL, GHStart6, GHEnd6) +} +func GHStart7() { + ns.LookAtObject(obj16, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GearhartTalk07") +} +func GHEnd7() { + ns.JournalEdit(ns.GetHost(), "ReturnToGearhart", 4) + ns.PrintToAll("GeneralPrint:GainedItem") + ns.GiveXp(ns.GetHost(), 500) + ns.Pickup(ns.GetHost(), obj52) + ns.CancelDialog(obj16) + gvar25 = 0 + ns.SetDialog(obj17, ns.NORMAL, QMStart3, QMEnd3) +} +func StartFleePiece() { + ns.ObjectGroupOff(gvar20) + ns.SetDialog(obj16, ns.NORMAL, GHStart6, GHEnd6) + gvar25 = 3 + flag7 = true + ns.ObjectGroupOn(gvar18) + ns.ObjectGroupOn(gvar19) + ns.FrameTimer(1, StartBatAttack) +} +func StartBatAttack() { + ns.Wander(obj14) + ns.Wander(obj15) + ns.Attack(obj10, obj14) + ns.Attack(obj11, obj14) + ns.Attack(obj12, obj15) + ns.Attack(obj13, obj15) + ns.SecondTimer(2, BatGroup1Peel) +} +func BatGroup1Die() { + var v0 int + ivar23 += 1 + v0 = ivar23 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.AggressionLevel(obj11, 0.83) + ns.Attack(obj11, ns.GetHost()) + goto LABEL3 +LABEL2: + ns.FrameTimer(1, IdleMaiden1) + goto LABEL3 +LABEL3: + return +} +func BatGroup2Die() { + var v0 int + ivar24 += 1 + v0 = ivar24 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.AggressionLevel(obj13, 0.83) + ns.Attack(obj13, ns.GetHost()) + goto LABEL3 +LABEL2: + ns.FrameTimer(1, IdleMaiden2) + goto LABEL3 +LABEL3: + return +} +func batToOrchard() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) + obj9 = ns.GetCaller() + ns.FrameTimer(90, BatReport) +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + if !flag8 { + goto LABEL2 + } + ns.CreatureFollow(obj17, ns.GetHost()) +LABEL2: + return +} +func stopEscorting() { + if !ns.IsCaller(obj17) { + goto LABEL1 + } + flag8 = true + ns.CreatureGuard(obj17, 1291, 4108, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func IdleMaiden1() { + ns.CreatureIdle(obj14) + flag5 = true + ns.SetDialog(obj14, ns.NORMAL, Maiden1Start, Maiden1End) + ns.CreatureGuard(obj14, ns.GetObjectX(obj14), ns.GetObjectY(obj14), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +} +func IdleMaiden2() { + ns.CreatureIdle(obj15) + flag6 = true + ns.SetDialog(obj15, ns.NORMAL, Maiden2Start, Maiden2End) + ns.CreatureGuard(obj15, ns.GetObjectX(obj15), ns.GetObjectY(obj15), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +} +func Maiden1See() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !flag4 { + goto LABEL1 + } + if !(ivar23 < 2) { + goto LABEL1 + } + ns.Chat(obj14, "War01A.scr:Maiden1Talk03") + flag4 = false + ns.SecondTimer(3, ResetMaiden) +LABEL1: + return +} +func Maiden2See() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !flag4 { + goto LABEL1 + } + if !(ivar24 < 2) { + goto LABEL1 + } + ns.Chat(obj15, "War01A.scr:Maiden2Talk02") + flag4 = false + ns.SecondTimer(3, ResetMaiden) +LABEL1: + return +} +func Maiden1Start() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Maiden1Talk04") +} +func Maiden1End() { + ns.SetDialog(obj14, ns.NORMAL, Maiden1Start, Maiden1End) +} +func Maiden2Start() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Maiden2Talk03") +} +func Maiden2End() { + ns.SetDialog(obj15, ns.NORMAL, Maiden2Start, Maiden2End) +} +func ResetMaiden() { + flag4 = true +} +func Maiden1Contact() { + if !flag5 { + goto LABEL1 + } + if !ns.IsAttackedBy(obj14, ns.GetCaller()) { + goto LABEL1 + } + ns.Wander(obj14) + flag5 = false + ns.CancelDialog(obj14) + ns.FrameTimer(90, IdleMaiden1) +LABEL1: + return +} +func Maiden2Contact() { + if !flag6 { + goto LABEL1 + } + if !ns.IsAttackedBy(obj15, ns.GetCaller()) { + goto LABEL1 + } + ns.Wander(obj15) + flag6 = false + ns.CancelDialog(obj15) + ns.FrameTimer(90, IdleMaiden2) +LABEL1: + return +} +func BatGroup1Peel() { + ns.Attack(obj10, ns.GetHost()) + ns.SecondTimer(2, BatGroup2Peel) +} +func BatGroup2Peel() { + ns.Attack(obj12, ns.GetHost()) +} +func CaveEntranceCheck() { + ns.AggressionLevel(ns.GetCaller(), 0.16) + ns.GoBackHome(ns.GetCaller()) +} +func BatReport() { + ns.AggressionLevel(obj9, 0.83) +} +func UrchinDead() { + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagCapture, wp22) + ns.JournalEdit(ns.GetHost(), "OrchardQuest", 4) + ns.JournalEntry(ns.GetHost(), "ReturnToGearhart", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.SetDialog(obj16, ns.NORMAL, GHStart7, GHEnd7) + gvar25 = 4 + ns.ObjectGroupOff(gvar21) + ns.Music(16, 100) +} +func ShortDelay() { + ns.ObjectOff(obj32) + ns.MoveObject(obj17, 2288, 2840) + ns.SetQuestStatus(1, "PlayerInSewers") + flag27 = true + ns.FrameTimer(20, ElevatorExplode) +} +func ElevatorExplode() { + var v0 int + v0 = ivar35 + if v0 == 3 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.MechGolemDie, wp22) + ns.FrameTimer(30, QMTalkStart) + goto LABEL3 +LABEL2: + if ivar35 != 0 { + goto LABEL4 + } + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) +LABEL4: + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.HammerMissing, wp22) + ns.AudioEvent(ns.WallDestroyed, wp22) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj28), ns.GetObjectY(obj28), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj29), ns.GetObjectY(obj29), 0, 0) + ns.ObjectOff(obj28) + ns.ObjectOff(obj29) + ns.ObjectOff(obj32) + ivar35 += 1 + if ivar35 != 1 { + goto LABEL5 + } + ns.MoveObject(obj30, 4507, 4426) +LABEL5: + if ivar35 != 2 { + goto LABEL6 + } + ns.MoveObject(obj31, 4507, 4426) +LABEL6: + ns.FrameTimer(10, ElevatorExplode) + goto LABEL3 +LABEL3: + return +} +func QMTalkStart() { + ns.SetDialog(obj17, ns.NORMAL, QMBlastStart, QMBlastEnd) + ns.StartDialog(obj17, ns.GetHost()) +} +func QMBlastStart() { + ns.TellStory(ns.HumanMaleEatFood, "War02:QuarterMaster11") +} +func QMBlastEnd() { + ns.CancelDialog(obj17) + ns.Frozen(ns.GetHost(), false) + ns.FrameTimer(2, BackToNormal) +} +func BackToNormal() { + ns.WideScreen(false) +} +func TurnOffLights() { + ns.LookAtObject(obj16, ns.GetHost()) + ns.ObjectGroupToggle(gvar75) + ns.ObjectGroupToggle(gvar76) + ns.ObjectGroupToggle(gvar77) + ns.ObjectGroupToggle(gvar78) + ns.ObjectToggle(obj53) + ns.ObjectToggle(obj54) + ns.ObjectToggle(obj55) + if !flag84 { + goto LABEL1 + } + flag84 = false + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.Gear2, wp22) + ns.SetDialog(obj41, ns.NORMAL, DanStart2, DanEnd2) + ns.SetDialog(obj42, ns.NORMAL, JesseStart2, JesseEnd2) + ns.SetDialog(obj44, ns.NORMAL, EricStart2, EricEnd2) + ns.SetDialog(obj16, ns.NORMAL, GHStart8, GHEnd8) + ns.SetDialog(obj45, ns.NORMAL, JacobStart2, JacobEnd2) + if ns.GetQuestStatus("EnteredGauntlet") == 1 { + goto LABEL2 + } + if !ns.IsVisibleTo(obj16, ns.GetHost()) { + goto LABEL2 + } + ns.FrameTimer(2, TalkToGearhart) +LABEL2: + goto LABEL3 +LABEL1: + flag84 = true + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.Gear3, wp22) + ns.SetDialog(obj41, ns.NORMAL, DanStart1, DanEnd1) + ns.SetDialog(obj42, ns.NORMAL, JesseStart1, JesseEnd1) + ns.SetDialog(obj44, ns.NORMAL, EricStart1, EricEnd1) + ns.SetDialog(obj45, ns.NORMAL, JacobStart1, JacobEnd1) +LABEL3: + return +} +func TurnOnLights() { + ns.ObjectGroupOn(gvar75) + ns.ObjectGroupOn(gvar76) + ns.ObjectGroupOn(gvar77) + ns.ObjectOn(obj53) + ns.ObjectOn(obj54) + ns.ObjectOn(obj55) + ns.SetDialog(obj41, ns.NORMAL, DanStart1, DanEnd1) + ns.SetDialog(obj42, ns.NORMAL, JesseStart1, JesseEnd1) + ns.SetDialog(obj44, ns.NORMAL, EricStart1, EricEnd1) + ns.SetDialog(obj45, ns.NORMAL, JacobStart1, JacobEnd1) +} +func MoveToFacade() { + ns.MoveObject(ns.GetHost(), 3473, 1234) + ns.Frozen(obj16, false) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(obj16, 2215, 3389) + ns.CreatureGuard(obj16, 2215, 3389, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.UnBlind() + ns.SetDialog(obj50, ns.NORMAL, HorStart1, HorEnd1) + ns.StartupScreen(3) +} +func DanStart1() { + ns.DestroyEveryChat() + ns.Frozen(obj41, true) + ns.CreatureIdle(obj41) + ns.LookAtObject(obj41, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman2Talk01") +} +func DanEnd1() { + ns.Frozen(obj41, false) + ns.Wander(obj41) + ns.SetDialog(obj41, ns.NORMAL, DanStart1, DanEnd1) +} +func DanStart2() { + ns.DestroyEveryChat() + ns.Frozen(obj41, true) + ns.CreatureIdle(obj41) + ns.LookAtObject(obj41, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman2Talk02") +} +func DanEnd2() { + ns.Frozen(obj41, false) + ns.Wander(obj41) + ns.SetDialog(obj41, ns.NORMAL, DanStart2, DanEnd2) +} +func JesseStart1() { + ns.DestroyEveryChat() + ns.Frozen(obj42, true) + ns.CreatureIdle(obj42) + ns.LookAtObject(obj42, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman1Talk01") +} +func JesseEnd1() { + ns.Frozen(obj42, false) + ns.Wander(obj42) + ns.SetDialog(obj42, ns.NORMAL, JesseStart1, JesseEnd1) +} +func JesseStart2() { + ns.DestroyEveryChat() + ns.Frozen(obj42, true) + ns.CreatureIdle(obj42) + ns.LookAtObject(obj42, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman1Talk02") +} +func JesseEnd2() { + ns.Frozen(obj42, false) + ns.Wander(obj42) + ns.SetDialog(obj42, ns.NORMAL, JesseStart2, JesseEnd2) +} +func EricStart1() { + ns.DestroyEveryChat() + ns.Frozen(obj44, true) + ns.CreatureIdle(obj44) + ns.LookAtObject(obj44, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman3Talk01") +} +func EricEnd1() { + ns.Frozen(obj44, false) + ns.Wander(obj44) + ns.SetDialog(obj44, ns.NORMAL, EricStart1, EricEnd1) +} +func EricStart2() { + ns.DestroyEveryChat() + ns.Frozen(obj44, true) + ns.CreatureIdle(obj44) + ns.LookAtObject(obj44, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman3Talk02") +} +func EricEnd2() { + ns.Frozen(obj44, false) + ns.Wander(obj44) + ns.SetDialog(obj44, ns.NORMAL, EricStart2, EricEnd2) +} +func TylerStart1() { + ns.DestroyEveryChat() + ns.Frozen(obj46, true) + ns.CreatureIdle(obj46) + ns.LookAtObject(obj46, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman4Talk01") +} +func TylerEnd1() { + ns.Frozen(obj46, false) + ns.LookAtObject(obj46, obj43) + ns.CreatureGuard(obj46, ns.GetObjectX(obj46), ns.GetObjectY(obj46), ns.GetObjectX(obj43), ns.GetObjectY(obj43), 0) + ns.SetDialog(obj46, ns.NORMAL, TylerStart1, TylerEnd1) +} +func JacobStart1() { + ns.DestroyEveryChat() + ns.Frozen(obj45, true) + ns.CreatureIdle(obj45) + ns.LookAtObject(obj45, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman5Talk01") +} +func JacobEnd1() { + ns.Frozen(obj45, false) + ns.Wander(obj45) + ns.SetDialog(obj45, ns.NORMAL, JacobStart1, JacobEnd1) +} +func JacobStart2() { + ns.DestroyEveryChat() + ns.Frozen(obj45, true) + ns.CreatureIdle(obj45) + ns.LookAtObject(obj45, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Townsman5Talk02") +} +func JacobEnd2() { + ns.Frozen(obj45, false) + ns.Wander(obj45) + ns.SetDialog(obj45, ns.NORMAL, JacobStart2, JacobEnd2) +} +func BingStart1() { + var ( + v0 int + v1 int + ) + ns.DestroyEveryChat() + v0 = ns.Random(1, 6) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + if v1 == 3 { + goto LABEL3 + } + if v1 == 4 { + goto LABEL4 + } + if v1 == 5 { + goto LABEL5 + } + if v1 == 6 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War02A:BartenderTalk1aStart") + goto LABEL7 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War02A:BartenderTalk1bStart") + goto LABEL7 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "War02A:BartenderTalk1cStart") + goto LABEL7 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "War02:BartenderTalk1dStart") + goto LABEL7 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "War02A:BartenderTalk1eStart") + goto LABEL7 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "War02A:BartenderTalk1fStart") + goto LABEL7 +LABEL7: + return +} +func BingEnd1() { + ns.SetDialog(obj43, ns.NORMAL, BingStart1, BingEnd1) +} +func BingStart2() { + ns.TellStory(ns.HumanMaleEatFood, "War02B.scr:BarTalk1") +} +func BingEnd2() { + ns.SetDialog(obj43, ns.NORMAL, BingStart2, BingEnd2) +} +func LydiaStart1() { + ns.DestroyEveryChat() + ns.LookAtObject(obj49, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:LydiaTalk02") +} +func LydiaEnd1() { + ns.SetDialog(obj49, ns.NORMAL, LydiaStart1, LydiaEnd1) +} +func LydiaStart2() { + ns.DestroyEveryChat() + ns.LookAtObject(obj49, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:LydiaTalk01") +} +func LydiaEnd2() { + ns.SetDialog(obj49, ns.NORMAL, LydiaStart3, LydiaEnd3) +} +func LydiaStart3() { + var ( + v0 int + v1 int + ) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:LydiaTalk01") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:LydiaTalk03") + goto LABEL3 +LABEL3: + return +} +func LydiaEnd3() { + ns.SetDialog(obj49, ns.NORMAL, LydiaStart3, LydiaEnd3) +} +func MelStart1() { + var v0 int + ns.DestroyEveryChat() + ns.Frozen(obj47, true) + ns.CreatureIdle(obj47) + ns.LookAtObject(obj47, ns.GetHost()) + ivar90 = ns.Random(1, 2) + v0 = ivar90 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Maiden1Talk01") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Maiden1Talk02") + goto LABEL3 +LABEL3: + return +} +func MelEnd1() { + ns.Frozen(obj47, false) + ns.LookAtObject(obj47, obj43) + ns.CreatureGuard(obj47, ns.GetObjectX(obj47), ns.GetObjectY(obj47), ns.GetObjectX(obj43), ns.GetObjectY(obj43), 0) + ns.SetDialog(obj47, ns.NORMAL, MelStart1, MelEnd1) +} +func EvelynStart1() { + ns.DestroyEveryChat() + ns.Frozen(obj48, true) + ns.CreatureIdle(obj48) + ns.LookAtObject(obj48, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Maiden2Talk01") +} +func EvelynEnd1() { + ns.Frozen(obj48, false) + ns.Wander(obj48) + ns.SetDialog(obj48, ns.NORMAL, EvelynStart1, EvelynEnd1) +} +func QMProd() { + var v0 float32 + v0 = ns.Distance(ns.GetObjectX(obj17), ns.GetObjectY(obj17), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v0 > 300) { + goto LABEL1 + } + if gvar89 != 1 { + goto LABEL1 + } + ns.CreatureFollow(obj17, ns.GetHost()) + flag8 = true + gvar89 = 2 +LABEL1: + if !(v0 < 150) { + goto LABEL2 + } + if gvar89 != 2 { + goto LABEL2 + } + if !(ns.IsTalking() == false && ns.IsTrading() == false) { + goto LABEL2 + } + if !ns.IsVisibleTo(obj17, ns.GetHost()) { + goto LABEL2 + } + gvar89 = 1 + ns.StartDialog(obj17, ns.GetHost()) +LABEL2: + if flag26 { + goto LABEL3 + } + ns.SecondTimer(3, QMProd) +LABEL3: + return +} +func QMGearTrigger() { + if !ns.IsCaller(obj17) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Wander(obj17) + ns.CreatureGuard(obj17, 2280, 3101, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func QMStart1() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:QuaterMasterTalk01") + ns.JournalEdit(ns.GetHost(), "FirstQuest", 4) +} +func QMEnd1() { + if flag85 { + goto LABEL1 + } + ns.MoveObject(obj16, 1720, 3432) + ns.CreatureFollow(obj16, ns.GetHost()) + flag37 = true + ns.SetDialog(obj16, ns.YESNO, GHStart1, GHEnd1) +LABEL1: + ns.SetDialog(obj17, ns.NORMAL, QMStart2, QMEnd2) + if !flag88 { + goto LABEL2 + } + ns.JournalEdit(ns.GetHost(), "FirstQuest", 4) +LABEL2: + ns.JournalEntry(ns.GetHost(), "SponsorQuest", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +} +func QMStart2() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:QuarterMasterTalk02") +} +func QMEnd2() { + ns.SetDialog(obj17, ns.NORMAL, QMStart2, QMEnd2) +} +func QMStart3() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:QuarterMasterTalk03") +} +func QMEnd3() { + ns.CancelDialog(obj17) + ns.GiveXp(ns.GetHost(), 1000) + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagCapture, wp22) + ns.Blind() + ns.SetQuestStatus(1, "EnteredGauntlet") + flag38 = true + ns.FrameTimer(45, DropLetter) +} +func QMStart4() { + ns.TellStory(ns.HumanMaleEatFood, "War02a:QuarterMasterTalk03") +} +func QMEnd4() { + ns.JournalEntry(ns.GetHost(), "SaveGearhart", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.CreatureFollow(obj17, ns.GetHost()) + flag8 = true + ns.SetDialog(obj17, ns.NORMAL, QMStart5, QMEnd5) + ns.StartDialog(obj17, ns.GetHost()) +} +func QMStart5() { + ns.TellStory(ns.HumanMaleEatFood, "War02a:QuarterMasterTalk04") +} +func QMEnd5() { + ns.SetDialog(obj17, ns.NORMAL, QMStart5a, QMEnd5a) +} +func QMStart5a() { + ns.TellStory(ns.HumanMaleEatFood, "War02a:QuarterMasterTalk05") +} +func QMEnd5a() { + ns.SetDialog(obj17, ns.NORMAL, QMStart5a, QMEnd5a) +} +func QMStart6() { + ns.TellStory(ns.HumanMaleEatFood, "War02:QuarterMaster10") +} +func QMEnd6() { + ns.CancelDialog(obj17) + ns.CreatureGuard(obj17, 2280, 3101, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + if flag26 { + goto LABEL1 + } + ns.Walk(obj17, 2276, 3120) +LABEL1: + return +} +func QMStart7() { + ns.SetDialog(obj39, ns.NORMAL, KirikStart2, KirikEnd2) + ns.TellStory(ns.HumanMaleEatFood, "War02:QuarterMaster12") +} +func QMEnd7() { + if gvar40 == 0 { + goto LABEL1 + } + ns.Delete(gvar40) +LABEL1: + if gvar73 == 0 { + goto LABEL2 + } + ns.Delete(gvar73) +LABEL2: + ns.ObjectOff(obj58) + ns.ObjectOn(obj72) + ns.GiveXp(ns.GetHost(), 1500) + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagCapture, wp22) + ns.JournalEdit(ns.GetHost(), "SaveGearhart", 4) + ns.CancelDialog(obj17) + ns.SetDialog(obj16, ns.NORMAL, GHStart9, GHEnd9) + ns.StartDialog(obj16, ns.GetHost()) +} +func TalkToGearhart() { + ns.StartDialog(obj16, ns.GetHost()) +} +func GHStart1() { + ns.LookAtObject(obj16, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GearhartTalk01") +} +func GHEnd1() { + if ns.GetAnswer(obj16) != 1 { + goto LABEL1 + } + ns.SetDialog(obj16, ns.NORMAL, GHStart2, GHEnd2) + GHStart2() + goto LABEL2 +LABEL1: + ns.SetDialog(obj16, ns.NORMAL, GHStart3, GHEnd3) + GHStart3() +LABEL2: + flag85 = true +} +func GHStart2() { + ns.LookAtObject(obj16, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GearhartTalk02") +} +func GHEnd2() { + ns.Frozen(obj16, false) + flag86 = true + gvar25 = 2 + ns.CancelDialog(obj16) + ns.Pickup(ns.GetHost(), obj51) + ns.JournalEdit(ns.GetHost(), "SponsorQuest", 4) + ns.JournalEntry(ns.GetHost(), "OrchardQuest", 2) + ns.PrintToAll("GeneralPrint:GainedKey") + ns.PrintToAll("Con01a:NewJournalEntry") + if flag87 { + goto LABEL1 + } + ns.ObjectOn(obj71) + flag37 = false + ns.Move(obj16, wp91) +LABEL1: + return +} +func GHStart3() { + ns.Frozen(obj16, true) + ns.LookAtObject(obj16, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GearhartTalk03") +} +func GHEnd3() { + ns.Frozen(obj16, false) + ns.SetDialog(obj16, ns.YESNO, GHStart5, GHEnd5) + gvar25 = 1 + if flag87 { + goto LABEL1 + } + ns.ObjectOn(obj71) + flag37 = false + ns.Move(obj16, wp91) +LABEL1: + return +} +func GHStart4() { + ns.LookAtObject(obj16, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GearhartTalk05") +} +func GHEnd4() { + ns.SetDialog(obj16, ns.NORMAL, GHStart4, GHEnd4) +} +func GHStart5() { + ns.Frozen(obj16, true) + ns.CreatureIdle(obj16) + ns.LookAtObject(obj16, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GearhartTalk04") +} +func GHEnd5() { + if ns.GetAnswer(obj16) != 1 { + goto LABEL1 + } + ns.SetDialog(obj16, ns.NORMAL, GHStart2, GHEnd2) + GHStart2() + goto LABEL2 +LABEL1: + ns.SetDialog(obj16, ns.NORMAL, GHStart3, GHEnd3) + GHStart3() +LABEL2: + flag85 = true +} +func GHStart8() { + ns.LookAtObject(obj16, ns.GetHost()) + ns.Chat(obj16, "War01A.scr:GearhartTalk08") + ns.FrameTimer(60, GHEnd8) +} +func GHEnd8() { + var v0 int + v0 = gvar25 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + if v0 == 4 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.CancelDialog(obj16) + goto LABEL6 +LABEL2: + ns.SetDialog(obj16, ns.YESNO, GHStart5, GHEnd5) + goto LABEL6 +LABEL3: + ns.SetDialog(obj16, ns.NORMAL, GHStart4, GHEnd4) + goto LABEL6 +LABEL4: + ns.SetDialog(obj16, ns.NORMAL, GHStart6, GHEnd6) + goto LABEL6 +LABEL5: + ns.SetDialog(obj16, ns.NORMAL, GHStart7, GHEnd7) + goto LABEL6 +LABEL6: + return +} +func GHStart9() { + ns.LookAtObject(ns.GetHost(), obj16) + ns.TellStory(ns.HumanMaleEatFood, "War02a:GearhartTalk07") +} +func GHEnd9() { + ns.CancelDialog(obj16) + ns.Blind() + ns.SetOwner(ns.GetHost(), obj50) + ns.FrameTimer(45, MoveToFacade) +} +func KirikStart2() { + ns.TellStory(ns.HumanMaleEatFood, "War03a:Guard1Talk02") +} +func KirikEnd2() { + ns.SetDialog(obj39, ns.NORMAL, KirikStart2, KirikEnd2) +} +func HorStart1() { + flag36 = false + ns.LookAtObject(obj50, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War02B.scr:HorrendousTalk1Start") +} +func HorEnd1() { + ns.UnlockDoor(obj56) + ns.UnlockDoor(obj57) + ns.JournalEntry(ns.GetHost(), "War03aIxQuest", 2) + ns.PrintToAll("Con02a:ItemsAddedToInventory") + ns.Pickup(ns.GetHost(), obj62) + ns.Pickup(ns.GetHost(), obj63) + ns.Pickup(ns.GetHost(), obj64) + ns.Pickup(ns.GetHost(), obj70) + ns.SetDialog(obj50, ns.NORMAL, HorStart2, HorEnd2) +} +func HorStart2() { + ns.TellStory(ns.HumanMaleEatFood, "War02A.scr:RealTalk2Start") +} +func HorEnd2() { + ns.SetDialog(obj50, ns.NORMAL, HorStart2, HorEnd2) +} +func HorTalkStart() { + if !flag36 { + goto LABEL1 + } + flag36 = false + ns.StartDialog(obj50, ns.GetHost()) +LABEL1: + return +} +func GHInRoom() { + if !ns.IsCaller(obj16) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + flag87 = true + ns.CreatureGuard(obj16, ns.GetObjectX(obj16), ns.GetObjectY(obj16), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + if !flag86 { + goto LABEL2 + } + ns.SetDialog(obj16, ns.NORMAL, GHStart4, GHEnd4) + goto LABEL1 +LABEL2: + ns.SetDialog(obj16, ns.YESNO, GHStart5, GHEnd5) +LABEL1: + return +} +func PlayerInGearRoom() { + if !ns.IsVisibleTo(obj17, ns.GetHost()) { + goto LABEL1 + } + ns.ObjectGroupOff(gvar81) + ns.SetDialog(obj17, ns.NORMAL, QMStart6, QMEnd6) + ns.StartDialog(obj17, ns.GetHost()) +LABEL1: + return +} +func PlayerExitSewers() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj17, 2392, 3545) + ns.MoveObject(obj16, 2457, 3476) + ns.MoveObject(obj50, 3395, 1224) + ns.MoveObject(obj59, 3348, 1195) + ns.MoveObject(obj60, 3371, 1278) + ns.LookAtObject(obj16, ns.GetHost()) + ns.LookAtObject(obj17, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj17) + ns.Frozen(ns.GetHost(), true) + ns.CreatureGuard(obj17, ns.GetObjectX(obj17), ns.GetObjectY(obj17), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj16, ns.GetObjectX(obj16), ns.GetObjectY(obj16), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj50, ns.GetObjectX(obj50), ns.GetObjectY(obj50), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj59, ns.GetObjectX(obj59), ns.GetObjectY(obj59), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj60, ns.GetObjectX(obj60), ns.GetObjectY(obj60), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.FrameTimer(30, Congrats) +LABEL1: + return +} +func Congrats() { + ns.SetDialog(obj17, ns.NEXT, QMStart7, QMEnd7) + ns.StartDialog(obj17, ns.GetHost()) +} +func DropLetter() { + ns.Delete(obj52) + ns.FrameTimer(1, MovePlayer) +} +func MovePlayer() { + ns.MoveObject(ns.GetHost(), 2586, 5309) +} +func SecretTrainingRoom() { + ns.ObjectGroupOff(gvar79) + secretSound() + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func SecretRoom() { + ns.ObjectGroupOff(gvar80) + ns.GiveXp(ns.GetHost(), 100) + secretSound() + ns.PrintToAll("GeneralPrint:SecretFound") +} +func GeneralSecret() { + ns.GiveXp(ns.GetHost(), 100) + secretSound() + ns.PrintToAll("GeneralPrint:SecretFound") +} +func secretSound() { + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp22) +} +func QMEndTrigger() { + if !ns.IsCaller(obj17) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + flag26 = true + ns.CreatureGuard(obj17, ns.GetObjectX(obj17), ns.GetObjectY(obj17), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func FKG1Start() { + ns.TellStory(ns.SwordsmanRecognize, "War01A.scr:Guard2Talk1aStart") +} +func FKG1End() { + ns.SetDialog(obj117, ns.NORMAL, FKG1Start, FKG1End) +} +func SecretSurprise() { + ns.ObjectOn(gvar73) + ns.MoveObject(gvar73, 4416, 1000) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) + secretSound() +} +func SecretSword() { + secretSound() + ns.GiveXp(ns.GetHost(), 150) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.FrameTimer(15, FlamesOut) +} +func FlamesOut() { + ns.GroupDelete(gvar122) + ns.AudioEvent(ns.FireExtinguish, wp124) +} +func gauntletQuest() { + ns.Music(1, 100) + ns.JournalEntry(ns.GetHost(), "FirstQuest", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp22) +} +func CaveMusic() { + ns.ObjectOff(obj113) + ns.ObjectGroupOn(gvar21) + ns.Music(19, 100) +} +func TownMusic() { + ns.ObjectGroupOff(gvar21) + if gvar118 == 0 { + goto LABEL1 + } + ns.ObjectOn(obj113) +LABEL1: + ns.Music(16, 100) +} +func runFromPain() { + ns.RunAway(ns.GetTrigger(), ns.GetHost(), 60) + obj94 = ns.GetTrigger() + ns.RestoreHealth(obj94, 1000) + if !flag37 { + goto LABEL1 + } + ns.FrameTimer(63, followPlayer) +LABEL1: + if ns.GetTrigger() != obj17 { + goto LABEL2 + } + ns.FrameTimer(63, followPlayer) +LABEL2: + return +} +func followPlayer() { + ns.CreatureFollow(obj94, ns.GetHost()) +} +func InitializeWizardSetpiece() { + obj136 = ns.Object("Wizard") + obj137 = ns.Object("Wizard2") + obj138 = ns.Object("Jerry") + obj139 = ns.Object("Bryan") + obj140 = ns.Object("FireKnightGuard1") + obj141 = ns.Object("Staff") + wp142 = ns.Waypoint("WizardMark") + wp143 = ns.Waypoint("BryanMark") + wp144 = ns.Waypoint("AudioOrigin") + wp145 = ns.Waypoint("WizardStorage") + wp146 = ns.Waypoint("WizardExitPath") + ns.Pickup(obj136, obj141) + ns.SetOwner(ns.GetHost(), obj139) + ns.SetOwner(ns.GetHost(), obj138) + ns.CastSpellObjectObject(ns.SPELL_SHIELD, obj136, obj136) + ns.Enchant(obj136, ns.ENCHANT_INVISIBLE, 0) +} +func CreatureSetup() { + ns.SetOwner(ns.GetHost(), obj115) + ns.SetOwner(ns.GetHost(), obj116) + ns.SetOwner(ns.GetHost(), obj39) + ns.SetOwner(ns.GetHost(), obj43) + ns.SetOwner(ns.GetHost(), obj44) + ns.SetOwner(ns.GetHost(), obj45) + ns.SetOwner(ns.GetHost(), obj41) + ns.SetOwner(ns.GetHost(), obj42) + ns.SetOwner(ns.GetHost(), obj46) + ns.SetOwner(ns.GetHost(), obj47) + ns.SetOwner(ns.GetHost(), obj48) + ns.SetOwner(ns.GetHost(), obj49) + ns.SetOwner(ns.GetHost(), obj16) + ns.SetOwner(ns.GetHost(), obj17) + ns.SetOwner(ns.GetHost(), obj14) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj117) + ns.SetOwner(ns.GetHost(), obj59) + ns.SetOwner(ns.GetHost(), obj60) + ns.SetOwner(ns.GetHost(), obj39) + if ns.GetQuestStatus("War02A:EnteredGauntlet") != 1 { + goto LABEL1 + } + if !flag38 { + goto LABEL1 + } + flag38 = false + ns.Delete(obj14) + ns.Delete(obj15) + ns.UnlockDoor(obj34) + ns.UnlockDoor(obj120) + ns.UnlockDoor(obj119) + ns.CancelDialog(obj115) + ns.CancelDialog(obj116) + ns.MoveObject(obj42, 2724, 3161) + ns.CreatureGuard(obj42, 2724, 3161, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetDialog(obj49, ns.NORMAL, LydiaStart2, LydiaEnd2) + ns.SetDialog(obj17, ns.NEXT, QMStart4, QMEnd4) + ns.SetDialog(obj41, ns.NORMAL, DanStart1, DanEnd1) + ns.SetDialog(obj42, ns.NORMAL, JesseStart2, JesseEnd2) + ns.SetDialog(obj44, ns.NORMAL, EricStart1, EricEnd1) + ns.SetDialog(obj45, ns.NORMAL, JacobStart1, JacobEnd1) + ns.MoveObject(obj16, 2590, 3279) + ns.CreatureGuard(obj16, ns.GetObjectX(obj16), ns.GetObjectY(obj16), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + if ns.GetQuestStatus("PlayerInSewers") == 1 { + goto LABEL2 + } + ns.CreatureFollow(obj17, ns.GetHost()) + ns.StartDialog(obj17, ns.GetHost()) + goto LABEL3 +LABEL2: + ns.MoveObject(obj17, 2296, 3099) + ns.CreatureGuard(obj17, 2296, 3099, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL3: + ns.SetShopkeeperText(obj43, "War02B.scr:BarTalk1") + ns.SetShopkeeperText(obj114, "War03b:Shopkeeper") + ns.ObjectGroupOn(gvar74) + ns.ObjectGroupOn(gvar75) + ns.ObjectGroupOn(gvar76) + ns.ObjectGroupOn(gvar77) + ns.ObjectOn(obj53) + ns.ObjectOn(obj54) + ns.ObjectOn(obj55) + ns.MoveObject(obj41, 3829, 3524) + ns.FrameTimer(1, DisableDudes) +LABEL1: + if ns.GetQuestStatus("War02A:EnteredGauntlet") != 2 { + goto LABEL4 + } + if !flag27 { + goto LABEL4 + } + flag27 = false + ns.LockDoor(obj33) + ns.LockDoor(obj34) + ns.SetDialog(obj41, ns.NORMAL, DanStart1, DanEnd1) + ns.SetDialog(obj42, ns.NORMAL, JesseStart2, JesseEnd2) + ns.SetDialog(obj44, ns.NORMAL, EricStart1, EricEnd1) + ns.SetDialog(obj45, ns.NORMAL, JacobStart1, JacobEnd1) + ns.ObjectGroupOn(gvar74) + ns.ObjectGroupOn(gvar75) + ns.ObjectGroupOn(gvar76) + ns.ObjectGroupOn(gvar77) + ns.ObjectOn(obj53) + ns.ObjectOn(obj54) + ns.ObjectOn(obj55) + ns.LockDoor(obj34) + ns.LockDoor(obj33) + ns.UnlockDoor(obj57) + ns.UnlockDoor(obj56) + ns.SetShopkeeperText(obj114, "War03b:Shopkeeper") + ns.CancelDialog(obj115) + ns.CancelDialog(obj116) + ns.ObjectGroupOn(gvar74) + PlayerExitSewers() +LABEL4: + return +} +func GateGuard1AStart() { + ns.LookAtObject(obj115, ns.GetHost()) + ns.Frozen(obj115, true) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GateGuard1Talk01") +} +func GateGuard1AEnd() { + ns.Frozen(obj115, false) + ns.SetDialog(obj115, ns.NORMAL, GateGuard1BStart, GateGuard1BEnd) +} +func GateGuard1BStart() { + ns.LookAtObject(obj115, ns.GetHost()) + ns.Frozen(obj115, true) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GateGuard1Talk02") +} +func GateGuard1BEnd() { + ns.Frozen(obj115, false) + ns.SetDialog(obj115, ns.NORMAL, GateGuard1BStart, GateGuard1BEnd) +} +func GateGuard2AStart() { + ns.LookAtObject(obj116, ns.GetHost()) + ns.Frozen(obj116, true) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GateGuard2Talk01") +} +func GateGuard2AEnd() { + ns.Frozen(obj116, false) + ns.SetDialog(obj116, ns.NORMAL, GateGuard2BStart, GateGuard2BEnd) +} +func GateGuard2BStart() { + ns.LookAtObject(obj116, ns.GetHost()) + ns.Frozen(obj116, true) + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:GateGuard2Talk02") +} +func GateGuard2BEnd() { + ns.Frozen(obj116, false) + ns.SetDialog(obj116, ns.NORMAL, GateGuard2AStart, GateGuard2AEnd) +} +func OpenGearDoor() { + if !ns.IsCaller(obj16) { + goto LABEL1 + } + ns.UnlockDoor(obj119) + ns.UnlockDoor(obj120) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + return +} +func CaptainStartTalk() { + ns.StartDialog(obj95, ns.GetHost()) +} +func CaptainStart1() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:CaptainTalkStart") +} +func CaptainEnd1() { + flag88 = true + ns.SetDialog(obj95, ns.NORMAL, CaptainStart2, CaptainEnd2) +} +func CaptainStart2() { + var ( + v0 int + v1 int + ) + v0 = ns.Random(1, 4) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + if v1 == 3 { + goto LABEL3 + } + if v1 == 4 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War01a:CaptainTalk2aStart") + goto LABEL5 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War01a:CaptainTalk2bStart") + goto LABEL5 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "War01a:CaptainTalk2cStart") + goto LABEL5 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "War01a:CaptainTalk2eStart") + goto LABEL5 +LABEL5: + return +} +func CaptainEnd2() { + ns.SetDialog(obj95, ns.NORMAL, CaptainStart2, CaptainEnd2) +} +func KirikStart1() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Guard1Talk01") +} +func KirikEnd1() { + ns.SetDialog(obj39, ns.NORMAL, KirikStart1, KirikEnd1) +} +func GiveXP() { + ns.ObjectGroupOff(gvar121) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func DisableDudes() { + ns.ObjectOff(obj41) +} +func IntroBatAttack() { + if !flag93 { + goto LABEL1 + } + if !ns.IsTrading() { + goto LABEL2 + } + ns.Frozen(gvar40, true) + ns.FrameTimer(10, ResetBat) +LABEL2: + ns.FrameTimer(10, IntroBatAttack) +LABEL1: + return +} +func ResetBat() { + if !flag93 { + goto LABEL1 + } + ns.Frozen(gvar40, false) +LABEL1: + return +} +func IntroBatDies() { + flag93 = false +} +func DestroyIntroBat() { + ns.Delete(gvar40) +} +func MapInitialize() { + obj95 = ns.Object("AirshipCaptain") + obj96 = ns.Object("Basket") + obj97 = ns.Object("BasketShadow") + obj106 = ns.Object("BarrelSign") + obj107 = ns.Object("WallSign") + obj108 = ns.Object("ChestSign") + obj109 = ns.Object("JumpSign") + obj110 = ns.Object("WellSign") + obj111 = ns.Object("AppleSign") + obj100 = ns.Object("DownGear") + obj101 = ns.Object("UpGear") + obj98 = ns.Object("UpToSurface") + obj99 = ns.Object("ElevatorDoor") + obj16 = ns.Object("F2Gearhart") + obj50 = ns.Object("Horrendous") + obj102 = ns.Object("MidCityGate1") + obj103 = ns.Object("MidCityGate2") + obj104 = ns.Object("GauntletDoorL") + obj105 = ns.Object("GauntletDoorR") + gvar73 = ns.Object("SecretSpider") + ns.ObjectOff(gvar73) + obj71 = ns.Object("MachRoomTrigger") + ns.ObjectOff(obj71) + obj72 = ns.Object("TalkWithHorTrigger") + ns.ObjectOff(obj72) + obj113 = ns.Object("CaveMusicTrigger") + gvar21 = ns.ObjectGroup("TownMusicTriggers") + ns.ObjectGroupOff(gvar21) + obj39 = ns.Object("Kirik") + gvar40 = ns.Object("IntroBat") + obj114 = ns.Object("F2Bull") + obj115 = ns.Object("Bruce") + obj116 = ns.Object("F6FireGuard10") + obj41 = ns.Object("Daniel") + obj42 = ns.Object("Jesse") + obj45 = ns.Object("Jacob") + obj44 = ns.Object("Eric") + obj46 = ns.Object("Tyler") + obj43 = ns.Object("Bing") + obj47 = ns.Object("Melissa") + obj48 = ns.Object("Evelyn") + obj49 = ns.Object("Lydia") + obj117 = ns.Object("F1Rogan") + obj59 = ns.Object("FireKnightGuard3") + obj60 = ns.Object("FireKnightGuard4") + obj17 = ns.Object("QuarterMaster") + obj10 = ns.Object("AppleBat1") + obj12 = ns.Object("AppleBat1A") + obj13 = ns.Object("AppleBat1B") + obj11 = ns.Object("AppleBat2") + obj14 = ns.Object("Kristine") + obj15 = ns.Object("Jennifer") + gvar118 = ns.Object("MasterUrchin") + obj53 = ns.Object("GearLight1") + obj54 = ns.Object("GearLight2") + obj55 = ns.Object("GearLight3") + obj119 = ns.Object("GearDoorR") + obj120 = ns.Object("GearDoorL") + obj51 = ns.Object("OrchardKey") + obj52 = ns.Object("SponsorshipLetter") + obj28 = ns.Object("SewerGear1") + obj29 = ns.Object("SewerGear2") + obj30 = ns.Object("Brick1") + obj31 = ns.Object("Brick2") + obj32 = ns.Object("SewerBottom") + obj33 = ns.Object("ExpressDoor") + obj34 = ns.Object("ServiceDoor") + obj57 = ns.Object("IxDoorR") + obj56 = ns.Object("IxDoorL") + obj58 = ns.Object("SewerExitTrigger") + obj61 = ns.Object("Goodies") + obj62 = ns.Object("HorGold") + obj63 = ns.Object("SturdyBoots") + obj64 = ns.Object("NiceCloak") + obj65 = ns.Object("BatScroll") + obj66 = ns.Object("LeechScroll") + obj67 = ns.Object("SpiderScroll") + obj68 = ns.Object("LargeSpiderScroll") + obj69 = ns.Object("TrollScroll") + obj70 = ns.Object("UrchinScroll") + obj112 = ns.Object("LightTrigger") + gvar74 = ns.ObjectGroup("Peds") + gvar18 = ns.ObjectGroup("FleePiece") + gvar19 = ns.ObjectGroup("FleePiece2") + gvar75 = ns.ObjectGroup("StreetLamps") + gvar76 = ns.ObjectGroup("StreetLamps2") + gvar77 = ns.ObjectGroup("LightGears") + gvar78 = ns.ObjectGroup("LightGears2") + gvar20 = ns.ObjectGroup("FleeTriggers") + gvar121 = ns.ObjectGroup("SecretAreaWow") + gvar79 = ns.ObjectGroup("SecretTrainingTriggers") + gvar80 = ns.ObjectGroup("SecretRoom2Triggers") + gvar81 = ns.ObjectGroup("PlayerGearTriggers") + gvar122 = ns.ObjectGroup("FireSwordFlames") + gvar123 = ns.WallGroup("SetPieceWalls") + wp22 = ns.Waypoint("PlayerSounds") + wp91 = ns.Waypoint("GearhartWP") + wp92 = ns.Waypoint("QMStartWP") + wp124 = ns.Waypoint("FireSnufWay") + gvar125 = ns.WaypointGroup("CaveWP") + ns.StoryPic(obj117, "WarriorPic") + ns.StoryPic(obj41, "MalePic5") + ns.StoryPic(obj42, "Townsman1Pic") + ns.StoryPic(obj44, "Townsman3Pic") + ns.StoryPic(obj17, "QuarterMasterPic") + ns.StoryPic(obj46, "IxGuard1Pic") + ns.StoryPic(obj49, "MaidenPic3") + ns.StoryPic(obj47, "MaidenPic2") + ns.StoryPic(obj48, "MaidenPic") + ns.StoryPic(obj45, "DrunkPic") + ns.StoryPic(obj16, "GearhartPic") + ns.StoryPic(obj95, "AirshipCaptainPic") + ns.StoryPic(obj39, "Warrior4Pic") + ns.StoryPic(obj14, "MaidenPic2") + ns.StoryPic(obj15, "MaidenPic") + ns.SetDialog(obj117, ns.NORMAL, FKG1Start, FKG1End) + ns.SetDialog(obj115, ns.NORMAL, GateGuard1AStart, GateGuard1AEnd) + ns.SetDialog(obj116, ns.NORMAL, GateGuard2AStart, GateGuard2AEnd) + ns.SetDialog(obj41, ns.NORMAL, DanStart1, DanEnd1) + ns.SetDialog(obj42, ns.NORMAL, JesseStart1, JesseEnd1) + ns.SetDialog(obj44, ns.NORMAL, EricStart1, EricEnd1) + ns.SetDialog(obj46, ns.NORMAL, TylerStart1, TylerEnd1) + ns.SetDialog(obj45, ns.NORMAL, JacobStart1, JacobEnd1) + ns.SetDialog(obj49, ns.NORMAL, LydiaStart1, LydiaEnd1) + ns.SetDialog(obj47, ns.NORMAL, MelStart1, MelEnd1) + ns.SetDialog(obj48, ns.NORMAL, EvelynStart1, EvelynEnd1) + ns.SetDialog(obj17, ns.NORMAL, QMStart1, QMEnd1) + ns.SetDialog(obj95, ns.NORMAL, CaptainStart1, CaptainEnd1) + ns.SetDialog(obj39, ns.NORMAL, KirikStart1, KirikEnd1) + ns.ObjectGroupOff(gvar18) + ns.ObjectGroupOff(gvar19) + ns.WayPointGroupOff(gvar125) + ns.ObjectGroupOff(gvar74) + ns.LockDoor(obj33) + ns.LockDoor(obj34) + ns.LockDoor(obj119) + ns.LockDoor(obj120) + ns.LockDoor(obj56) + ns.LockDoor(obj57) + ns.LockDoor(obj102) + ns.LockDoor(obj103) + ns.LockDoor(obj104) + ns.LockDoor(obj105) + ns.StoryPic(obj50, "HorrendousPic") + ns.StoryPic(obj115, "Warrior5Pic") + ns.StoryPic(obj116, "Warrior3Pic") + InitializeWizardSetpiece() + ns.StartupScreen(1) + ns.FrameTimer(3, gauntletQuest) + ns.FrameTimer(1, CaptainStartTalk) +} +func MapEntry() { + if ns.GetQuestStatus("War02A:EnteredGauntlet") != 1 { + goto LABEL1 + } + ns.Music(16, 100) +LABEL1: + if ns.GetQuestStatus("War02A:EnteredGauntlet") != 2 { + goto LABEL2 + } + ns.Music(16, 100) +LABEL2: + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + if ns.GetQuestStatus("War02A:EnteredGauntlet") != 1 { + goto LABEL1 + } + ns.DeathScreen(2) + goto LABEL2 +LABEL1: + if ns.GetQuestStatus("War02A:EnteredGauntlet") != 2 { + goto LABEL3 + } + ns.DeathScreen(3) + goto LABEL2 +LABEL3: + ns.DeathScreen(1) +LABEL2: + return +} +func WizardEnter() { + gvar133 = gvar127 + ns.Move(obj136, wp142) + ns.Move(obj139, wp143) +} +func JerrySpeaks() { + ns.LookAtObject(obj138, obj136) + ns.Chat(obj138, "War01A.scr:SetpieceGuard1Talk01") + ns.FrameTimer(60, WizardAttackJerry) +} +func WizardAttackJerry() { + gvar133 = gvar129 + ns.LookAtObject(obj136, obj138) + ns.LookAtObject(obj138, obj136) + ns.Chat(obj138, "War01A.scr:SetpieceGuard2Talk01") + ns.CastSpellObjectLocation(ns.SPELL_LIGHTNING, obj136, ns.GetObjectX(obj138), ns.GetObjectY(obj138)) + ns.FrameTimer(15, BryanAttackWizard) +} +func BryanAttackWizardAgain() { + ns.Attack(obj139, obj136) +} +func BryanSpeaks() { + ns.LookAtObject(obj139, obj137) + ns.LookAtObject(obj138, obj137) + ns.Chat(obj139, "War01A.scr:SetpieceGuard2Talk02") + ns.FrameTimer(80, WizardExit) +} +func WizardExit() { + ns.DestroyEveryChat() + ns.Move(obj139, wp146) + ns.CreatureFollow(obj137, obj139) + ns.CreatureFollow(obj138, obj137) + gvar133 = gvar131 + ns.FrameTimer(120, ReleasePlayer) +} +func ReleasePlayer() { + ns.Music(16, 100) + ns.WideScreen(false) + ns.MoveObject(obj138, ns.GetWaypointX(wp145), ns.GetWaypointY(wp145)) + ns.MoveObject(obj139, ns.GetWaypointX(wp145), ns.GetWaypointY(wp145)) + ns.MoveObject(obj137, ns.GetWaypointX(wp145), ns.GetWaypointY(wp145)) + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar74) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar123) + ns.NoWallSound(false) + ns.FrameTimer(1, DisableGuys) +} +func DisableGuys() { + ns.ObjectOff(obj138) + ns.ObjectOff(obj139) + ns.ObjectOff(obj137) +} +func WizardReport() { + var v0 int + v0 = gvar133 + if v0 == gvar127 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.EnchantOff(obj136, ns.ENCHANT_INVISIBLE) + ns.LookAtObject(obj136, obj138) + gvar133 = gvar128 + ns.FrameTimer(15, JerrySpeaks) + goto LABEL2 +LABEL2: + return +} +func StopBryan() { + ns.CreatureIdle(obj139) +} +func SwapWizards() { + ns.Drop(obj136, obj141) + ns.AudioEvent(ns.WoodenWeaponDrop, wp144) + ns.MoveObject(obj137, ns.GetObjectX(obj136), ns.GetObjectY(obj136)) + ns.MoveObject(obj136, ns.GetWaypointX(wp145), ns.GetWaypointY(wp145)) +} +func WizardInjured() { + var v0 int + ivar134 += 1 + if !(ivar134 > 1) { + goto LABEL1 + } + v0 = gvar133 + if v0 == gvar129 { + goto LABEL2 + } + if v0 == gvar131 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.DestroyEveryChat() + ns.FrameTimer(5, SwapWizards) + ns.AudioEvent(ns.NPCHurt, wp144) + gvar133 = gvar130 + ns.CreatureIdle(obj136) + ns.FrameTimer(10, StopBryan) + ns.FrameTimer(20, BryanSpeaks) + goto LABEL1 +LABEL3: + if !ns.IsCaller(obj140) { + goto LABEL4 + } + ns.Damage(ns.GetTrigger(), 0, 1000, 0) +LABEL4: + goto LABEL1 +LABEL1: + return +} +func StartWizardSetpiece() { + if !(!flag135 && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + if gvar40 == 0 { + goto LABEL2 + } + ns.Damage(gvar40, 0, 100, 0) + ns.FrameTimer(30, DestroyIntroBat) +LABEL2: + ns.Music(4, 100) + flag135 = true + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.WideScreen(true) + ns.MoveWaypoint(wp144, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.Delete(obj95) + ns.Delete(obj96) + ns.Delete(obj97) + ns.FrameTimer(45, WizardEnter) +LABEL1: + return +} +func BryanAttackWizard() { + ns.AudioEvent(ns.SwordsmanRecognize, wp144) + ns.Attack(obj139, obj136) + ns.FrameTimer(7, BryanAttackWizardAgain) +} +func Clear() { + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war02a/dummy_test.go b/examples/war02a/dummy_test.go new file mode 100644 index 0000000..28e7556 --- /dev/null +++ b/examples/war02a/dummy_test.go @@ -0,0 +1,6 @@ +package war02a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war02a/war02a.go b/examples/war02a/war02a.go new file mode 100644 index 0000000..af842a1 --- /dev/null +++ b/examples/war02a/war02a.go @@ -0,0 +1,2313 @@ +package war02a + +import ( + "strconv" + + "github.com/noxworld-dev/noxscript/ns/v3" +) + +var ( + ivar4 int + flag5 bool + flag6 bool + obj7 ns.ObjectID + obj8 ns.ObjectID + gvar9 ns.ObjectGroupID + wp10 ns.WaypointID + flag11 bool + flag12 bool + gvar13 ns.ObjectGroupID + gvar14 ns.ObjectGroupID + gvar15 ns.ObjectGroupID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 [40]ns.ObjectID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + wp59 ns.WaypointID + wp60 ns.WaypointID + wp61 ns.WaypointID + wp62 ns.WaypointID + wp63 ns.WaypointID + wp64 ns.WaypointID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID + wp69 ns.WaypointID + wp70 ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + wp73 ns.WaypointID + wp74 ns.WaypointID + wp75 ns.WaypointID + wp76 ns.WaypointID + wp77 ns.WaypointID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + ivar90 int + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + gvar98 ns.WallGroupID + gvar99 int + gvar100 int + gvar101 int + gvar102 int + gvar103 int + gvar104 int + gvar105 int + gvar106 int + gvar107 int + gvar108 int + gvar109 int + gvar110 int + gvar111 int + gvar112 int + gvar113 int + gvar114 int + gvar115 int + gvar116 int + gvar117 int + gvar118 int + gvar119 int + gvar120 int + gvar121 int + gvar122 int + gvar123 int + gvar124 int + gvar125 int + gvar126 int + gvar127 int + gvar128 int + gvar129 int + gvar130 int + gvar131 int + gvar132 int + gvar133 int + gvar134 int + gvar135 int + gvar136 int + gvar137 int + gvar138 int + flag139 bool + flag140 bool + flag141 bool + flag142 bool + flag143 bool + flag144 bool + flag145 bool + flag146 bool + flag147 bool + flag148 bool + flag149 bool + ivar150 int + ivar151 int + ivar152 int + ivar153 int + ivar154 int + ivar155 int + ivar156 int + ivar157 int + ivar158 int + ivar159 int + ivar160 int + ivar161 int + ivar162 int + ivar163 int + ivar164 int + ivar165 int + gvar166 int + gvar167 int + gvar168 int + gvar169 int + gvar170 int + gvar171 int + gvar172 int + gvar173 int + gvar174 int + gvar175 int + gvar176 int + gvar177 int + gvar178 int + gvar179 int + gvar180 int + gvar181 int + gvar182 int + gvar183 int + gvar184 int + gvar185 int + obj186 [8]ns.ObjectID + obj187 [8]ns.ObjectID + obj188 [8]ns.ObjectID + obj189 [8]ns.ObjectID + obj190 [8]ns.ObjectID + obj191 [8]ns.ObjectID + obj192 [8]ns.ObjectID + obj193 [8]ns.ObjectID + obj194 [8]ns.ObjectID + obj195 [8]ns.ObjectID + wp196 [8]ns.WaypointID + wp197 [8]ns.WaypointID + wp198 [8]ns.WaypointID + wp199 [8]ns.WaypointID + wp200 [8]ns.WaypointID + wp201 [8]ns.WaypointID + wp202 [8]ns.WaypointID + wp203 [8]ns.WaypointID + wp204 [8]ns.WaypointID + wp205 [8]ns.WaypointID + ivar206 int + obj207 ns.ObjectID + obj208 ns.ObjectID + obj209 ns.ObjectID + obj210 ns.ObjectID + obj211 ns.ObjectID + obj212 ns.ObjectID + obj213 ns.ObjectID + gvar214 ns.WallGroupID + flag215 bool + flag216 bool + gvar217 int + gvar218 int + ivar219 int + obj220 ns.ObjectID + obj221 ns.ObjectID + obj222 ns.ObjectID + obj223 ns.ObjectID + obj224 ns.ObjectID + obj225 ns.ObjectID + obj226 ns.ObjectID + obj227 ns.ObjectID + gvar228 ns.WallGroupID + ivar229 int + obj230 ns.ObjectID + obj231 ns.ObjectID + obj232 ns.ObjectID + gvar233 ns.ObjectGroupID + gvar234 ns.ObjectGroupID + gvar235 ns.WallGroupID + wp236 ns.WaypointID + flag237 bool + flag238 bool + gvar239 ns.ObjectGroupID + obj240 ns.ObjectID + obj241 ns.ObjectID + obj242 ns.ObjectID + obj243 ns.ObjectID + obj244 ns.ObjectID + obj245 ns.ObjectID + obj246 ns.ObjectID + obj247 ns.ObjectID + obj248 ns.ObjectID + obj249 ns.ObjectID + obj250 ns.ObjectID + obj251 ns.ObjectID + obj252 ns.ObjectID + obj253 ns.ObjectID + obj254 ns.ObjectID + obj255 ns.ObjectID + obj256 ns.ObjectID + obj257 ns.ObjectID + obj258 ns.ObjectID + obj259 ns.ObjectID + obj260 ns.ObjectID + obj261 ns.ObjectID + wp262 ns.WaypointID + wp263 ns.WaypointID + wp264 ns.WaypointID + wp265 ns.WaypointID + wp266 ns.WaypointID + wp267 ns.WaypointID + wp268 ns.WaypointID + wp269 ns.WaypointID + wp270 ns.WaypointID + wp271 ns.WaypointID + wp272 ns.WaypointID + wp273 ns.WaypointID + wp274 ns.WaypointID + wp275 ns.WaypointID + wp276 ns.WaypointID + wp277 ns.WaypointID + wp278 ns.WaypointID + wp279 ns.WaypointID + wp280 ns.WaypointID + wp281 ns.WaypointID + flag282 bool + obj283 ns.ObjectID + obj284 ns.ObjectID + gvar285 ns.ObjectGroupID +) + +func init() { + flag5 = true + flag6 = false + flag11 = true + flag12 = true + ivar90 = 0 + gvar99 = 0 + gvar100 = 1 + gvar101 = 2 + gvar102 = 3 + gvar103 = 0 + gvar104 = 1 + gvar105 = 2 + gvar106 = 3 + gvar107 = 0 + gvar108 = 1 + gvar109 = 2 + gvar110 = 3 + gvar111 = 0 + gvar112 = 1 + gvar113 = 2 + gvar114 = 3 + gvar115 = 0 + gvar116 = 1 + gvar117 = 2 + gvar118 = 3 + gvar119 = 0 + gvar120 = 1 + gvar121 = 2 + gvar122 = 3 + gvar123 = 0 + gvar124 = 1 + gvar125 = 2 + gvar126 = 3 + gvar127 = 0 + gvar128 = 1 + gvar129 = 2 + gvar130 = 3 + gvar131 = 0 + gvar132 = 1 + gvar133 = 2 + gvar134 = 3 + gvar135 = 0 + gvar136 = 1 + gvar137 = 2 + gvar138 = 3 + flag139 = true + flag140 = true + flag141 = true + flag142 = true + flag143 = true + flag144 = true + flag145 = true + flag146 = true + flag147 = true + flag148 = true + flag149 = true + gvar166 = gvar100 + gvar167 = gvar104 + gvar168 = gvar108 + gvar169 = gvar112 + gvar170 = gvar116 + gvar171 = gvar120 + gvar172 = gvar124 + gvar173 = gvar128 + gvar174 = gvar132 + gvar175 = gvar136 + gvar176 = gvar99 + gvar177 = gvar103 + gvar178 = gvar107 + gvar179 = gvar111 + gvar180 = gvar115 + gvar181 = gvar119 + gvar182 = gvar123 + gvar183 = gvar127 + gvar184 = gvar131 + gvar185 = gvar135 + ivar206 = 0 + flag215 = true + flag216 = true + ivar219 = 0 + ivar229 = 0 + flag237 = true + flag238 = false + flag282 = false +} +func secretTrigger() { + ns.MoveWaypoint(wp55, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp55) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +} +func PlayGauntletMusic() { + ns.Music(29, 100) +} +func initGauntletDoor() { + gvar14 = ns.ObjectGroup("GauntletGears") + ns.ObjectGroupOff(gvar14) + gvar13 = ns.ObjectGroup("GauntletDoorMovers") + obj16 = ns.Object("B1mover") + obj17 = ns.Object("B2mover") + obj18 = ns.Object("B3mover") + obj19 = ns.Object("B4mover") + obj20 = ns.Object("B5mover") + obj21 = ns.Object("B6mover") + obj22 = ns.Object("B7mover") + obj23 = ns.Object("B8mover") + obj24 = ns.Object("B9mover") + obj25 = ns.Object("B10mover") + obj26 = ns.Object("F1mover") + obj27 = ns.Object("F2mover") + obj28 = ns.Object("F3mover") + obj29 = ns.Object("F4mover") + obj30 = ns.Object("F5mover") + obj31 = ns.Object("F6mover") + obj32 = ns.Object("F7mover") + obj33 = ns.Object("F8mover") + obj34 = ns.Object("F9mover") + obj35 = ns.Object("F10mover") + wp56 = ns.Waypoint("B1way") + wp57 = ns.Waypoint("B2way") + wp58 = ns.Waypoint("B3way") + wp59 = ns.Waypoint("B4way") + wp60 = ns.Waypoint("B5way") + wp61 = ns.Waypoint("B6way") + wp62 = ns.Waypoint("B7way") + wp63 = ns.Waypoint("B8way") + wp64 = ns.Waypoint("B9way") + wp65 = ns.Waypoint("B10way") + wp66 = ns.Waypoint("B11way") + wp67 = ns.Waypoint("B12way") + wp68 = ns.Waypoint("B13way") + wp69 = ns.Waypoint("F1way") + wp70 = ns.Waypoint("F2way") + wp71 = ns.Waypoint("F3way") + wp72 = ns.Waypoint("F4way") + wp73 = ns.Waypoint("F5way") + wp74 = ns.Waypoint("F6way") + wp75 = ns.Waypoint("F7way") + wp76 = ns.Waypoint("F8way") + wp77 = ns.Waypoint("F9way") + wp78 = ns.Waypoint("F10way") + wp79 = ns.Waypoint("F11way") + wp80 = ns.Waypoint("F12way") + wp81 = ns.Waypoint("F13way") + ns.ObjectGroupOff(gvar233) + ns.LockDoor(obj283) + ns.LockDoor(obj284) +} +func gauntletGearsStop() { + ns.ObjectGroupOff(gvar14) +} +func openGauntlet() { + if flag6 { + goto LABEL1 + } + flag6 = true + ns.ObjectGroupOn(gvar14) + ns.FrameTimer(75, gauntletGearsStop) + ns.ObjectGroupOn(gvar13) + ns.Move(obj16, wp56) + ns.Move(obj17, wp57) + ns.Move(obj18, wp58) + ns.Move(obj19, wp59) + ns.Move(obj20, wp60) + ns.Move(obj21, wp61) + ns.Move(obj22, wp63) + ns.Move(obj23, wp64) + ns.Move(obj24, wp65) + ns.Move(obj25, wp66) + ns.Move(obj26, wp71) + ns.Move(obj27, wp72) + ns.Move(obj28, wp73) + ns.Move(obj29, wp74) + ns.Move(obj30, wp76) + ns.Move(obj31, wp77) + ns.Move(obj32, wp78) + ns.Move(obj33, wp79) + ns.Move(obj34, wp80) + ns.Move(obj35, wp81) + ns.FrameTimer(3, stoneGrinder) +LABEL1: + return +} +func closeGauntlet() { + if !flag6 { + goto LABEL1 + } + flag6 = false + ns.ObjectGroupOn(gvar14) + ns.FrameTimer(75, gauntletGearsStop) + ns.Move(obj16, wp58) + ns.Move(obj17, wp59) + ns.Move(obj18, wp60) + ns.Move(obj19, wp61) + ns.Move(obj20, wp62) + ns.Move(obj21, wp63) + ns.Move(obj22, wp65) + ns.Move(obj23, wp66) + ns.Move(obj24, wp67) + ns.Move(obj25, wp68) + ns.Move(obj26, wp69) + ns.Move(obj27, wp70) + ns.Move(obj28, wp71) + ns.Move(obj29, wp72) + ns.Move(obj30, wp74) + ns.Move(obj31, wp75) + ns.Move(obj32, wp76) + ns.Move(obj33, wp77) + ns.Move(obj34, wp78) + ns.Move(obj35, wp79) + ns.FrameTimer(10, stoneGrinder) +LABEL1: + return +} +func stoneGrinder() { + ns.MoveWaypoint(wp55, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BoulderMove, wp55) + ns.AudioEvent(ns.SecretWallStoneOpen, wp69) + ns.AudioEvent(ns.BoulderMove, wp70) + ns.AudioEvent(ns.SecretWallStoneOpen, wp71) + ns.AudioEvent(ns.BoulderMove, wp72) + ns.AudioEvent(ns.SecretWallStoneOpen, wp73) + ns.AudioEvent(ns.BoulderMove, wp74) + ns.AudioEvent(ns.SecretWallStoneOpen, wp75) + ns.AudioEvent(ns.BoulderMove, wp76) + ns.AudioEvent(ns.SecretWallStoneOpen, wp77) + ns.AudioEvent(ns.BoulderMove, wp78) + ns.AudioEvent(ns.SecretWallStoneOpen, wp79) +} +func openingGauntletPiece() { + PlayGauntletMusic() + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.LookAtObject(ns.GetHost(), obj42) + ns.CreatureGuard(obj42, 4982, 5036, ns.GetObjectX(obj44), ns.GetObjectY(obj44), 0) + ns.SetDialog(obj42, ns.NEXT, guardTalk2Start, guardTalk2End) + ns.StartDialog(obj42, ns.GetHost()) +} +func realHorrendousTalk1Start() { + ns.CreatureGuard(obj44, 4991, 4991, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.TellStory(ns.DemonRecognize, "War02A.scr:RealTalk1Start") + ns.JournalEntry(ns.GetHost(), "War2Gauntlet", 2) +} +func realHorrendousTalk1End() { + ns.SetDialog(obj44, "FALSE", realHorrendousTalk2Start, realHorrendousTalk2End) + ns.CreatureGuard(obj44, 5071, 4979, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj42, 4980, 5059, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj7, 4922, 5014, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj8, 5014, 4922, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) +} +func realHorrendousTalk2Start() { + ns.TellStory(ns.DemonRecognize, "War02A.scr:RealTalk2Start") +} +func realHorrendousTalk2End() { + ns.SetDialog(obj44, "FALSE", realHorrendousTalk3Start, realHorrendousTalk3End) +} +func realHorrendousTalk3Start() { + ns.TellStory(ns.DemonRecognize, "War02A.scr:RealTalk3Start") +} +func realHorrendousTalk3End() { + ns.CancelDialog(obj44) +} +func guardTalk2Start() { + ns.TellStory(ns.SwordsmanRecognize, "War02A.scr:GuardSay1Start") +} +func guardTalk2End() { + ns.CancelDialog(obj42) + ns.SetDialog(obj44, "FALSE", realHorrendousTalk1Start, realHorrendousTalk1End) + ns.StartDialog(obj44, ns.GetHost()) +} +func horrendousTalk1Start() { + ns.TellStory(ns.DemonRecognize, "War02A.scr:HorrendousTalk1Start") +} +func horrendousTalk1End() { + ns.CancelDialog(obj43) + ns.LookAtObject(obj43, obj45) + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.FrameTimer(5, chickenShirtTalk1Start) +} +func chickenShirtTalk1Start() { + ns.Chat(obj47, "War02A.scr:ChickenTalk1Start") + ns.FrameTimer(120, redShirtRunGauntlet) +} +func horrendousSay1() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !flag11 { + goto LABEL1 + } + ns.Music(0, 100) + ns.ObjectGroupOn(gvar15) + flag11 = false + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.LockDoor(obj50) + ns.LockDoor(obj51) + ns.SetDialog(obj43, "FALSE", horrendousTalk1Start, horrendousTalk1End) + ns.StartDialog(obj43, ns.GetHost()) +LABEL1: + return +} +func redShirtRunGauntlet() { + ns.AudioEvent(ns.SwordsmanHurt, wp89) + ns.Chat(obj45, "War02A.scr:RedShirtRunGauntlet") + ns.FrameTimer(70, redShirtDies) +} +func redShirtDies() { + ns.AudioEvent(ns.BerserkerChargeInvoke, wp88) + ns.Wander(obj45) +} +func bonesFly() { + ns.AudioEvent(ns.HammerMissing, wp89) + ns.AudioEvent(ns.GolemHitting, wp89) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) + ns.AudioEvent(ns.EmberDemonDie, wp88) + ns.AudioEvent(ns.SkeletonDie, wp89) + ivar4 = 0 + for { + if !(ivar4 < 40) { + goto LABEL1 + } + obj54[ivar4] = ns.CreateObject("ArmBone", wp88) + ns.PushObject(obj54[ivar4], -150, 1880, 3553) + ivar4 += 1 + } +LABEL1: + ivar4 = 0 + for { + if !(ivar4 < 40) { + goto LABEL3 + } + obj54[ivar4] = ns.CreateObject("LegBone", wp88) + ns.PushObject(obj54[ivar4], -150, 1880, 3553) + ivar4 += 1 + } +LABEL3: + ns.FrameTimer(30, chickenShirtRuns) + ns.FrameTimer(10, deadHead) +} +func deadHead() { + ns.Delete(obj45) + ns.AudioEvent("MechGolemHit", wp86) + ns.AudioEvent("SpikesDown", wp87) + ns.AudioEvent(ns.SkeletonDie, wp89) + ns.MoveObject(obj46, 1692, 3627) + ns.PushObject(obj46, -150, 1880, 3553) + ns.SetDialog(obj46, ns.NORMAL, deadTalk1Start, deadTalk1End) + ns.FrameTimer(40, chickenShirtRuns) +} +func deadTalk1Start() { + ns.TellStory("EmberDemonDies", "War02a:RedShirtDead") +} +func deadTalk1End() { + ns.CancelDialog(obj46) +} +func chickenShirtRuns() { + ns.Chat(obj47, "War02A.scr:ChickenShirtRuns") + chickenShirtCries1() + ns.CreatureGuard(obj47, 2033, 3833, 2035, 3905, 0) + ns.CancelDialog(obj47) + ns.SetDialog(obj47, ns.NORMAL, chickenTalk1Start, chickenTalk1End) + ns.FrameTimer(45, horrendousSay2) +} +func chickenShirtCries1() { + ns.AudioEvent(ns.UrchinRecognize, wp85) +} +func chickenTalk1Start() { + ns.TellStory(ns.UrchinRecognize, "War02A.scr:ChickenShirtRuns") +} +func chickenTalk1End() { + ns.SetDialog(obj47, ns.NORMAL, chickenTalk1Start, chickenTalk1End) +} +func horrendousSay2() { + ns.Music(29, 100) + ns.ObjectGroupOff(gvar15) + ns.Chat(obj43, "War02A.scr:HorrendousSay2") + ns.UnlockDoor(obj52) +} +func blockBash() { + ns.MoveWaypoint(wp55, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.HammerMissing, wp55) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) +} +func blockSmash1() { + ns.ObjectOn(obj36) + ns.ObjectOn(obj37) +} +func blockSmash2() { + ns.ObjectOn(obj38) + ns.ObjectOn(obj39) +} +func blockSmash3() { + ns.ObjectOn(obj40) + ns.ObjectOn(obj41) +} +func releaseUrchins1() { + ns.WallGroupOpen(gvar98) + ns.LockDoor(obj93) + ns.LockDoor(obj94) + ns.ObjectOn(obj91) + ns.ObjectOn(obj92) + ns.ObjectOff(obj97) +} +func twoDeadUrchins() { + if !(ivar90 > 1) { + goto LABEL1 + } + ns.UnlockDoor(obj95) + ns.UnlockDoor(obj96) +LABEL1: + return +} +func flamesOn() { + if !flag139 { + goto LABEL1 + } + ivar4 = 0 + for { + if !(ivar4 < 8) { + goto LABEL2 + } + obj186[ivar4] = 0 + obj187[ivar4] = 0 + obj188[ivar4] = 0 + obj189[ivar4] = 0 + obj190[ivar4] = 0 + obj191[ivar4] = 0 + obj192[ivar4] = 0 + obj193[ivar4] = 0 + obj194[ivar4] = 0 + obj195[ivar4] = 0 + ivar4 += 1 + } +LABEL2: + flag139 = false + flag140 = true + flag141 = true + flag142 = true + flag143 = true + flag144 = true + flag145 = true + flag146 = true + flag147 = true + flag148 = true + flag149 = true + flameWalk() + ns.FrameTimer(4, flameWalk2) + ns.FrameTimer(8, flameWalk3) + ns.FrameTimer(12, flameWalk4) + ns.FrameTimer(16, flameWalk5) + ns.FrameTimer(20, flameWalk6) + ns.FrameTimer(24, flameWalk7) + ns.FrameTimer(28, flameWalk8) + ns.FrameTimer(32, flameWalk9) + ns.FrameTimer(36, flameWalk10) + ns.LockDoor(obj52) + ns.LockDoor(obj48) + ns.LockDoor(obj49) +LABEL1: + return +} +func flamesOff() { + flag140 = false + flag141 = false + flag142 = false + flag143 = false + flag144 = false + flag145 = false + flag146 = false + flag147 = false + flag148 = false + flag149 = false +} +func flameWalk() { + var v0 int + v0 = gvar166 + if v0 == gvar99 { + goto LABEL1 + } + if v0 == gvar100 { + goto LABEL2 + } + if v0 == gvar101 { + goto LABEL3 + } + if v0 == gvar102 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar4 = 0 + for { + if !(ivar4 < 8) { + goto LABEL6 + } + ns.Delete(obj186[ivar4]) + obj186[ivar4] = 0 + ivar4 += 1 + } +LABEL6: + gvar166 = gvar100 + gvar176 = gvar99 + ivar156 = 60 + goto LABEL5 +LABEL2: + ivar4 = 0 + for { + if !(ivar4 < 8) { + goto LABEL8 + } + ns.Delete(obj186[ivar4]) + obj186[ivar4] = ns.CreateObject("SmallFlame", wp196[ivar4]) + ivar4 += 1 + } +LABEL8: + if gvar176 != gvar99 { + goto LABEL10 + } + gvar166 = gvar101 + ns.AudioEvent(ns.FireballCast, wp196[4]) + goto LABEL11 +LABEL10: + gvar166 = gvar99 +LABEL11: + gvar176 = gvar100 + ivar156 = 2 + goto LABEL5 +LABEL3: + ivar4 = 0 + for { + if !(ivar4 < 8) { + goto LABEL12 + } + ns.Delete(obj186[ivar4]) + obj186[ivar4] = ns.CreateObject("MediumFlame", wp196[ivar4]) + ivar4 += 1 + } +LABEL12: + if gvar176 != gvar100 { + goto LABEL14 + } + gvar166 = gvar102 + ns.AudioEvent(ns.DemonBreath, wp196[5]) + goto LABEL15 +LABEL14: + gvar166 = gvar100 + ns.AudioEvent(ns.FireExtinguish, wp196[4]) +LABEL15: + gvar176 = gvar101 + ivar156 = 2 + goto LABEL5 +LABEL4: + ivar4 = 0 + for { + if !(ivar4 < 8) { + goto LABEL16 + } + ns.Delete(obj186[ivar4]) + obj186[ivar4] = ns.CreateObject("Flame", wp196[ivar4]) + ivar4 += 1 + } +LABEL16: + gvar166 = gvar101 + gvar176 = gvar102 + ivar156 = 12 + goto LABEL5 +LABEL5: + if !flag140 { + goto LABEL18 + } + ns.FrameTimer(ivar156, flameWalk) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj186[ivar154]) + obj186[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk2() { + var v0 int + v0 = gvar167 + if v0 == gvar103 { + goto LABEL1 + } + if v0 == gvar104 { + goto LABEL2 + } + if v0 == gvar105 { + goto LABEL3 + } + if v0 == gvar106 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar150 = 0 + for { + if !(ivar150 < 8) { + goto LABEL6 + } + ns.Delete(obj187[ivar150]) + obj187[ivar150] = 0 + ivar150 += 1 + } +LABEL6: + gvar167 = gvar104 + gvar177 = gvar103 + ivar157 = 60 + goto LABEL5 +LABEL2: + ivar150 = 0 + for { + if !(ivar150 < 8) { + goto LABEL8 + } + ns.Delete(obj187[ivar150]) + obj187[ivar150] = ns.CreateObject("SmallFlame", wp197[ivar150]) + ivar150 += 1 + } +LABEL8: + if gvar177 != gvar103 { + goto LABEL10 + } + gvar167 = gvar105 + ns.AudioEvent(ns.FireballCast, wp197[4]) + goto LABEL11 +LABEL10: + gvar167 = gvar103 +LABEL11: + gvar177 = gvar104 + ivar157 = 2 + goto LABEL5 +LABEL3: + ivar150 = 0 + for { + if !(ivar150 < 8) { + goto LABEL12 + } + ns.Delete(obj187[ivar150]) + obj187[ivar150] = ns.CreateObject("MediumFlame", wp197[ivar150]) + ivar150 += 1 + } +LABEL12: + if gvar177 != gvar104 { + goto LABEL14 + } + gvar167 = gvar106 + ns.AudioEvent(ns.DemonBreath, wp197[5]) + goto LABEL15 +LABEL14: + gvar167 = gvar104 + ns.AudioEvent(ns.FireExtinguish, wp197[4]) +LABEL15: + gvar177 = gvar105 + ivar157 = 2 + goto LABEL5 +LABEL4: + ivar150 = 0 + for { + if !(ivar150 < 8) { + goto LABEL16 + } + ns.Delete(obj187[ivar150]) + obj187[ivar150] = ns.CreateObject("Flame", wp197[ivar150]) + ivar150 += 1 + } +LABEL16: + gvar167 = gvar105 + gvar177 = gvar106 + ivar157 = 12 + goto LABEL5 +LABEL5: + if !flag141 { + goto LABEL18 + } + ns.FrameTimer(ivar157, flameWalk2) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj187[ivar154]) + obj187[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk3() { + var v0 int + v0 = gvar168 + if v0 == gvar107 { + goto LABEL1 + } + if v0 == gvar108 { + goto LABEL2 + } + if v0 == gvar109 { + goto LABEL3 + } + if v0 == gvar110 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar151 = 0 + for { + if !(ivar151 < 8) { + goto LABEL6 + } + ns.Delete(obj188[ivar151]) + obj188[ivar151] = 0 + ivar151 += 1 + } +LABEL6: + gvar168 = gvar108 + gvar178 = gvar107 + ivar158 = 60 + goto LABEL5 +LABEL2: + ivar151 = 0 + for { + if !(ivar151 < 8) { + goto LABEL8 + } + ns.Delete(obj188[ivar151]) + obj188[ivar151] = ns.CreateObject("SmallFlame", wp198[ivar151]) + ivar151 += 1 + } +LABEL8: + if gvar178 != gvar107 { + goto LABEL10 + } + gvar168 = gvar109 + ns.AudioEvent(ns.FireballCast, wp198[4]) + goto LABEL11 +LABEL10: + gvar168 = gvar107 +LABEL11: + gvar178 = gvar108 + ivar158 = 2 + goto LABEL5 +LABEL3: + ivar151 = 0 + for { + if !(ivar151 < 8) { + goto LABEL12 + } + ns.Delete(obj188[ivar151]) + obj188[ivar151] = ns.CreateObject("MediumFlame", wp198[ivar151]) + ivar151 += 1 + } +LABEL12: + if gvar178 != gvar108 { + goto LABEL14 + } + gvar168 = gvar110 + ns.AudioEvent(ns.DemonBreath, wp198[5]) + goto LABEL15 +LABEL14: + gvar168 = gvar108 + ns.AudioEvent(ns.FireExtinguish, wp198[4]) +LABEL15: + gvar178 = gvar109 + ivar158 = 2 + goto LABEL5 +LABEL4: + ivar151 = 0 + for { + if !(ivar151 < 8) { + goto LABEL16 + } + ns.Delete(obj188[ivar151]) + obj188[ivar151] = ns.CreateObject("Flame", wp198[ivar151]) + ivar151 += 1 + } +LABEL16: + gvar168 = gvar109 + gvar178 = gvar110 + ivar158 = 12 + goto LABEL5 +LABEL5: + if !flag142 { + goto LABEL18 + } + ns.FrameTimer(ivar158, flameWalk3) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj188[ivar154]) + obj188[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk4() { + var v0 int + v0 = gvar169 + if v0 == gvar111 { + goto LABEL1 + } + if v0 == gvar112 { + goto LABEL2 + } + if v0 == gvar113 { + goto LABEL3 + } + if v0 == gvar114 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar152 = 0 + for { + if !(ivar152 < 8) { + goto LABEL6 + } + ns.Delete(obj189[ivar152]) + obj189[ivar152] = 0 + ivar152 += 1 + } +LABEL6: + gvar169 = gvar112 + gvar179 = gvar111 + ivar159 = 60 + goto LABEL5 +LABEL2: + ivar152 = 0 + for { + if !(ivar152 < 8) { + goto LABEL8 + } + ns.Delete(obj189[ivar152]) + obj189[ivar152] = ns.CreateObject("SmallFlame", wp199[ivar152]) + ivar152 += 1 + } +LABEL8: + if gvar179 != gvar111 { + goto LABEL10 + } + gvar169 = gvar113 + ns.AudioEvent(ns.FireballCast, wp199[4]) + goto LABEL11 +LABEL10: + gvar169 = gvar111 +LABEL11: + gvar179 = gvar112 + ivar159 = 2 + goto LABEL5 +LABEL3: + ivar152 = 0 + for { + if !(ivar152 < 8) { + goto LABEL12 + } + ns.Delete(obj189[ivar152]) + obj189[ivar152] = ns.CreateObject("MediumFlame", wp199[ivar152]) + ivar152 += 1 + } +LABEL12: + if gvar179 != gvar112 { + goto LABEL14 + } + gvar169 = gvar114 + ns.AudioEvent(ns.DemonBreath, wp199[5]) + goto LABEL15 +LABEL14: + gvar169 = gvar112 + ns.AudioEvent(ns.FireExtinguish, wp199[4]) +LABEL15: + gvar179 = gvar113 + ivar159 = 2 + goto LABEL5 +LABEL4: + ivar152 = 0 + for { + if !(ivar152 < 8) { + goto LABEL16 + } + ns.Delete(obj189[ivar152]) + obj189[ivar152] = ns.CreateObject("Flame", wp199[ivar152]) + ivar152 += 1 + } +LABEL16: + gvar169 = gvar113 + gvar179 = gvar114 + ivar159 = 12 + goto LABEL5 +LABEL5: + if !flag143 { + goto LABEL18 + } + ns.FrameTimer(ivar159, flameWalk4) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj189[ivar154]) + obj189[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk5() { + var v0 int + v0 = gvar170 + if v0 == gvar115 { + goto LABEL1 + } + if v0 == gvar116 { + goto LABEL2 + } + if v0 == gvar117 { + goto LABEL3 + } + if v0 == gvar118 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar153 = 0 + for { + if !(ivar153 < 8) { + goto LABEL6 + } + ns.Delete(obj190[ivar153]) + obj190[ivar153] = 0 + ivar153 += 1 + } +LABEL6: + gvar170 = gvar116 + gvar180 = gvar115 + ivar160 = 60 + goto LABEL5 +LABEL2: + ivar153 = 0 + for { + if !(ivar153 < 8) { + goto LABEL8 + } + ns.Delete(obj190[ivar153]) + obj190[ivar153] = ns.CreateObject("SmallFlame", wp200[ivar153]) + ivar153 += 1 + } +LABEL8: + if gvar180 != gvar115 { + goto LABEL10 + } + gvar170 = gvar117 + ns.AudioEvent(ns.FireballCast, wp200[4]) + goto LABEL11 +LABEL10: + gvar170 = gvar115 +LABEL11: + gvar180 = gvar116 + ivar160 = 2 + goto LABEL5 +LABEL3: + ivar153 = 0 + for { + if !(ivar153 < 8) { + goto LABEL12 + } + ns.Delete(obj190[ivar153]) + obj190[ivar153] = ns.CreateObject("MediumFlame", wp200[ivar153]) + ivar153 += 1 + } +LABEL12: + if gvar180 != gvar116 { + goto LABEL14 + } + gvar170 = gvar118 + ns.AudioEvent(ns.DemonBreath, wp200[5]) + goto LABEL15 +LABEL14: + gvar170 = gvar116 + ns.AudioEvent(ns.FireExtinguish, wp200[4]) +LABEL15: + gvar180 = gvar117 + ivar160 = 2 + goto LABEL5 +LABEL4: + ivar153 = 0 + for { + if !(ivar153 < 8) { + goto LABEL16 + } + ns.Delete(obj190[ivar153]) + obj190[ivar153] = ns.CreateObject("Flame", wp200[ivar153]) + ivar153 += 1 + } +LABEL16: + gvar170 = gvar117 + gvar180 = gvar118 + ivar160 = 12 + goto LABEL5 +LABEL5: + if !flag144 { + goto LABEL18 + } + ns.FrameTimer(ivar160, flameWalk5) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj190[ivar154]) + obj190[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk6() { + var v0 int + v0 = gvar171 + if v0 == gvar119 { + goto LABEL1 + } + if v0 == gvar120 { + goto LABEL2 + } + if v0 == gvar121 { + goto LABEL3 + } + if v0 == gvar122 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL6 + } + ns.Delete(obj191[ivar154]) + obj191[ivar154] = 0 + ivar154 += 1 + } +LABEL6: + gvar171 = gvar120 + gvar181 = gvar119 + ivar161 = 60 + goto LABEL5 +LABEL2: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL8 + } + ns.Delete(obj191[ivar154]) + obj191[ivar154] = ns.CreateObject("SmallFlame", wp201[ivar154]) + ivar154 += 1 + } +LABEL8: + if gvar181 != gvar119 { + goto LABEL10 + } + gvar171 = gvar121 + ns.AudioEvent(ns.FireballCast, wp201[4]) + goto LABEL11 +LABEL10: + gvar171 = gvar119 +LABEL11: + gvar181 = gvar120 + ivar161 = 2 + goto LABEL5 +LABEL3: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL12 + } + ns.Delete(obj191[ivar154]) + obj191[ivar154] = ns.CreateObject("MediumFlame", wp201[ivar154]) + ivar154 += 1 + } +LABEL12: + if gvar181 != gvar120 { + goto LABEL14 + } + gvar171 = gvar122 + ns.AudioEvent(ns.DemonBreath, wp201[5]) + goto LABEL15 +LABEL14: + gvar171 = gvar120 + ns.AudioEvent(ns.FireExtinguish, wp201[4]) +LABEL15: + gvar181 = gvar121 + ivar161 = 2 + goto LABEL5 +LABEL4: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL16 + } + ns.Delete(obj191[ivar154]) + obj191[ivar154] = ns.CreateObject("Flame", wp201[ivar154]) + ivar154 += 1 + } +LABEL16: + gvar171 = gvar121 + gvar181 = gvar122 + ivar161 = 12 + goto LABEL5 +LABEL5: + if !flag145 { + goto LABEL18 + } + ns.FrameTimer(ivar161, flameWalk6) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj191[ivar154]) + obj191[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk7() { + var v0 int + v0 = gvar172 + if v0 == gvar123 { + goto LABEL1 + } + if v0 == gvar124 { + goto LABEL2 + } + if v0 == gvar125 { + goto LABEL3 + } + if v0 == gvar126 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL6 + } + ns.Delete(obj192[ivar154]) + obj192[ivar154] = 0 + ivar154 += 1 + } +LABEL6: + gvar172 = gvar124 + gvar182 = gvar123 + ivar162 = 60 + goto LABEL5 +LABEL2: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL8 + } + ns.Delete(obj192[ivar154]) + obj192[ivar154] = ns.CreateObject("SmallFlame", wp202[ivar154]) + ivar154 += 1 + } +LABEL8: + if gvar182 != gvar123 { + goto LABEL10 + } + gvar172 = gvar125 + ns.AudioEvent(ns.FireballCast, wp202[4]) + goto LABEL11 +LABEL10: + gvar172 = gvar123 +LABEL11: + gvar182 = gvar124 + ivar162 = 2 + goto LABEL5 +LABEL3: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL12 + } + ns.Delete(obj192[ivar154]) + obj192[ivar154] = ns.CreateObject("MediumFlame", wp202[ivar154]) + ivar154 += 1 + } +LABEL12: + if gvar182 != gvar124 { + goto LABEL14 + } + gvar172 = gvar126 + ns.AudioEvent(ns.DemonBreath, wp202[5]) + goto LABEL15 +LABEL14: + gvar172 = gvar124 + ns.AudioEvent(ns.FireExtinguish, wp202[4]) +LABEL15: + gvar182 = gvar125 + ivar162 = 2 + goto LABEL5 +LABEL4: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL16 + } + ns.Delete(obj192[ivar154]) + obj192[ivar154] = ns.CreateObject("Flame", wp202[ivar154]) + ivar154 += 1 + } +LABEL16: + gvar172 = gvar125 + gvar182 = gvar126 + ivar162 = 12 + goto LABEL5 +LABEL5: + if !flag146 { + goto LABEL18 + } + ns.FrameTimer(ivar162, flameWalk7) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj192[ivar154]) + obj192[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk8() { + var v0 int + v0 = gvar173 + if v0 == gvar127 { + goto LABEL1 + } + if v0 == gvar128 { + goto LABEL2 + } + if v0 == gvar129 { + goto LABEL3 + } + if v0 == gvar130 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar155 = 0 + for { + if !(ivar155 < 8) { + goto LABEL6 + } + ns.Delete(obj193[ivar155]) + obj193[ivar155] = 0 + ivar155 += 1 + } +LABEL6: + gvar173 = gvar128 + gvar183 = gvar127 + ivar163 = 60 + goto LABEL5 +LABEL2: + ivar155 = 0 + for { + if !(ivar155 < 8) { + goto LABEL8 + } + ns.Delete(obj193[ivar155]) + obj193[ivar155] = ns.CreateObject("SmallFlame", wp203[ivar155]) + ivar155 += 1 + } +LABEL8: + if gvar183 != gvar127 { + goto LABEL10 + } + gvar173 = gvar129 + ns.AudioEvent(ns.FireballCast, wp203[4]) + goto LABEL11 +LABEL10: + gvar173 = gvar127 +LABEL11: + gvar183 = gvar128 + ivar163 = 2 + goto LABEL5 +LABEL3: + ivar155 = 0 + for { + if !(ivar155 < 8) { + goto LABEL12 + } + ns.Delete(obj193[ivar155]) + obj193[ivar155] = ns.CreateObject("MediumFlame", wp203[ivar155]) + ivar155 += 1 + } +LABEL12: + if gvar183 != gvar128 { + goto LABEL14 + } + gvar173 = gvar130 + ns.AudioEvent(ns.DemonBreath, wp203[5]) + goto LABEL15 +LABEL14: + gvar173 = gvar128 + ns.AudioEvent(ns.FireExtinguish, wp203[4]) +LABEL15: + gvar183 = gvar129 + ivar163 = 2 + goto LABEL5 +LABEL4: + ivar155 = 0 + for { + if !(ivar155 < 8) { + goto LABEL16 + } + ns.Delete(obj193[ivar155]) + obj193[ivar155] = ns.CreateObject("Flame", wp203[ivar155]) + ivar155 += 1 + } +LABEL16: + gvar173 = gvar129 + gvar183 = gvar130 + ivar163 = 12 + goto LABEL5 +LABEL5: + if !flag147 { + goto LABEL18 + } + ns.FrameTimer(ivar163, flameWalk8) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj193[ivar154]) + obj193[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk9() { + var v0 int + v0 = gvar174 + if v0 == gvar131 { + goto LABEL1 + } + if v0 == gvar132 { + goto LABEL2 + } + if v0 == gvar133 { + goto LABEL3 + } + if v0 == gvar134 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL6 + } + ns.Delete(obj194[ivar154]) + obj194[ivar154] = 0 + ivar154 += 1 + } +LABEL6: + gvar174 = gvar132 + gvar184 = gvar131 + ivar164 = 60 + goto LABEL5 +LABEL2: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL8 + } + ns.Delete(obj194[ivar154]) + obj194[ivar154] = ns.CreateObject("SmallFlame", wp204[ivar154]) + ivar154 += 1 + } +LABEL8: + if gvar184 != gvar131 { + goto LABEL10 + } + gvar174 = gvar133 + ns.AudioEvent(ns.FireballCast, wp203[4]) + goto LABEL11 +LABEL10: + gvar174 = gvar131 +LABEL11: + gvar184 = gvar132 + ivar164 = 2 + goto LABEL5 +LABEL3: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL12 + } + ns.Delete(obj194[ivar154]) + obj194[ivar154] = ns.CreateObject("MediumFlame", wp204[ivar154]) + ivar154 += 1 + } +LABEL12: + if gvar184 != gvar132 { + goto LABEL14 + } + gvar174 = gvar134 + ns.AudioEvent(ns.DemonBreath, wp204[5]) + goto LABEL15 +LABEL14: + gvar174 = gvar132 + ns.AudioEvent(ns.FireExtinguish, wp204[4]) +LABEL15: + gvar184 = gvar133 + ivar164 = 2 + goto LABEL5 +LABEL4: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL16 + } + ns.Delete(obj194[ivar154]) + obj194[ivar154] = ns.CreateObject("Flame", wp204[ivar154]) + ivar154 += 1 + } +LABEL16: + gvar174 = gvar133 + gvar184 = gvar134 + ivar164 = 12 + goto LABEL5 +LABEL5: + if !flag148 { + goto LABEL18 + } + ns.FrameTimer(ivar164, flameWalk9) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj194[ivar154]) + obj194[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func flameWalk10() { + var v0 int + v0 = gvar175 + if v0 == gvar135 { + goto LABEL1 + } + if v0 == gvar136 { + goto LABEL2 + } + if v0 == gvar137 { + goto LABEL3 + } + if v0 == gvar138 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL6 + } + ns.Delete(obj195[ivar154]) + obj195[ivar154] = 0 + ivar154 += 1 + } +LABEL6: + gvar175 = gvar136 + gvar185 = gvar135 + ivar165 = 60 + goto LABEL5 +LABEL2: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL8 + } + ns.Delete(obj195[ivar154]) + obj195[ivar154] = ns.CreateObject("SmallFlame", wp205[ivar154]) + ivar154 += 1 + } +LABEL8: + if gvar185 != gvar135 { + goto LABEL10 + } + gvar175 = gvar137 + ns.AudioEvent(ns.FireballCast, wp205[4]) + goto LABEL11 +LABEL10: + gvar175 = gvar135 +LABEL11: + gvar185 = gvar136 + ivar165 = 2 + goto LABEL5 +LABEL3: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL12 + } + ns.Delete(obj195[ivar154]) + obj195[ivar154] = ns.CreateObject("MediumFlame", wp205[ivar154]) + ivar154 += 1 + } +LABEL12: + if gvar185 != gvar136 { + goto LABEL14 + } + gvar175 = gvar138 + ns.AudioEvent(ns.DemonBreath, wp205[5]) + goto LABEL15 +LABEL14: + gvar175 = gvar136 + ns.AudioEvent(ns.FireExtinguish, wp205[4]) +LABEL15: + gvar185 = gvar137 + ivar165 = 2 + goto LABEL5 +LABEL4: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL16 + } + ns.Delete(obj195[ivar154]) + obj195[ivar154] = ns.CreateObject("Flame", wp205[ivar154]) + ivar154 += 1 + } +LABEL16: + gvar175 = gvar137 + gvar185 = gvar138 + ivar165 = 12 + goto LABEL5 +LABEL5: + if !flag149 { + goto LABEL18 + } + ns.FrameTimer(ivar165, flameWalk10) + goto LABEL19 +LABEL18: + ivar154 = 0 + for { + if !(ivar154 < 8) { + goto LABEL19 + } + ns.Delete(obj195[ivar154]) + obj195[ivar154] = 0 + ivar154 += 1 + } +LABEL19: + return +} +func initFlameGrates() { + ivar4 = 0 + for { + if !(ivar4 < 8) { + goto LABEL1 + } + wp196[ivar4] = ns.Waypoint("FlameWay1-" + strconv.Itoa(ivar4+1)) + wp197[ivar4] = ns.Waypoint("FlameWay2-" + strconv.Itoa(ivar4+1)) + wp198[ivar4] = ns.Waypoint("FlameWay3-" + strconv.Itoa(ivar4+1)) + wp199[ivar4] = ns.Waypoint("FlameWay4-" + strconv.Itoa(ivar4+1)) + wp200[ivar4] = ns.Waypoint("FlameWay5-" + strconv.Itoa(ivar4+1)) + wp201[ivar4] = ns.Waypoint("FlameWay6-" + strconv.Itoa(ivar4+1)) + wp202[ivar4] = ns.Waypoint("FlameWay7-" + strconv.Itoa(ivar4+1)) + wp203[ivar4] = ns.Waypoint("FlameWay8-" + strconv.Itoa(ivar4+1)) + wp204[ivar4] = ns.Waypoint("FlameWay9-" + strconv.Itoa(ivar4+1)) + wp205[ivar4] = ns.Waypoint("FlameWay10-" + strconv.Itoa(ivar4+1)) + ivar4 += 1 + } +LABEL1: + return +} +func releaseUrchins2() { + ns.WallGroupOpen(gvar214) + ns.LockDoor(obj209) + ns.LockDoor(obj210) + ns.ObjectOn(obj207) + ns.ObjectOn(obj208) + ns.ObjectOff(obj213) +} +func urchins2Die() { + ivar206 += 1 + threeDeadUrchins() +} +func threeDeadUrchins() { + if !(ivar206 > 1) { + goto LABEL1 + } + ns.UnlockDoor(obj211) + ns.UnlockDoor(obj212) +LABEL1: + return +} +func skullHallOn1() { + if !flag215 { + goto LABEL1 + } + ns.CastSpellLocationLocation(ns.SPELL_FIREBALL, 2323, 2047, 2794, 2518) + ns.FrameTimer(75, skullHallOn1) +LABEL1: + return +} +func skullHallOff1() { + flag215 = false +} +func releaseArena3() { + ns.Music(4, 100) + ns.WallGroupOpen(gvar228) + ns.ObjectOn(obj224) + ns.ObjectOn(obj225) + ns.ObjectOn(obj226) + ns.LockDoor(obj220) + ns.LockDoor(obj221) + ns.ObjectOff(obj227) +} +func arena3Die() { + ivar219 += 1 + arena3DeathToll() +} +func arena3DeathToll() { + if !(ivar219 > 2) { + goto LABEL1 + } + ns.UnlockDoor(obj222) + ns.UnlockDoor(obj223) +LABEL1: + return +} +func lockArena4() { + ns.LockDoor(obj230) + ns.LockDoor(obj231) +} +func loadArena4() { + ns.ObjectGroupOn(gvar233) + lockArena4() + ns.ObjectOff(obj232) + ns.FrameTimer(10, arena4SpikesUp) + ns.FrameTimer(40, disableArena4Elevators) + ns.FrameTimer(90, openArena4Cages) +} +func disableArena4Elevators() { + ns.ObjectGroupOff(gvar233) +} +func openArena4Cages() { + ns.WallGroupOpen(gvar235) +} +func arena4Die() { + ivar229 += 1 + arena4DeathToll() + ns.FrameTimer(90, arena4SpikesDown) +} +func arena4DeathToll() { + if !(ivar229 > 0) { + goto LABEL1 + } + ns.Music(29, 100) + ns.UnlockDoor(obj231) + ns.UnlockDoor(obj240) +LABEL1: + return +} +func arena4SpikesUp() { + ns.ObjectGroupOn(gvar234) + ns.MoveWaypoint(wp55, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FloorSpikesUp, wp55) +} +func arena4SpikesDown() { + ns.ObjectGroupOff(gvar234) + ns.MoveWaypoint(wp55, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FloorSpikesDown, wp55) +} +func enableZipperOfDeath() { + flag238 = true + cascade1() + zipperNoise() + zipperNoise2() +} +func zipperNoise() { + if !flag238 { + goto LABEL1 + } + ns.AudioEvent(ns.SecretWallStoneOpen, wp262) + ns.AudioEvent(ns.BoulderRoll, wp264) + ns.AudioEvent(ns.BoulderRoll, wp265) + ns.AudioEvent(ns.SecretWallStoneOpen, wp266) + ns.AudioEvent(ns.EarthRumbleMajor, wp268) + ns.AudioEvent(ns.EarthRumbleMajor, wp270) + ns.AudioEvent(ns.EarthRumbleMajor, wp272) + ns.AudioEvent(ns.EarthRumbleMajor, wp274) + ns.AudioEvent(ns.SecretWallStoneOpen, wp276) + ns.AudioEvent(ns.BoulderRoll, wp278) + ns.AudioEvent(ns.BoulderRoll, wp279) + ns.AudioEvent(ns.SecretWallStoneOpen, wp280) + ns.AudioEvent(ns.SecretWallStoneOpen, wp281) + ns.FrameTimer(30, zipperNoise) +LABEL1: + return +} +func zipperNoise2() { + if !flag238 { + goto LABEL1 + } + ns.AudioEvent(ns.MechGolemPowerUp, wp270) + ns.AudioEvent(ns.MechGolemPowerUp, wp271) + ns.FrameTimer(5, zipperNoise2) +LABEL1: + return +} +func cascade1() { + ns.ObjectOn(obj261) + ns.ObjectOn(obj241) + ns.ObjectOn(obj242) + ns.FrameTimer(4, cascade2) +} +func cascade2() { + ns.ObjectOn(obj243) + ns.ObjectOn(obj244) + ns.FrameTimer(4, cascade3) +} +func cascade3() { + ns.ObjectOn(obj245) + ns.ObjectOn(obj246) + ns.FrameTimer(4, cascade4) +} +func cascade4() { + ns.ObjectOn(obj247) + ns.ObjectOn(obj248) + ns.FrameTimer(4, cascade5) +} +func cascade5() { + ns.ObjectOn(obj249) + ns.ObjectOn(obj250) + ns.FrameTimer(4, cascade6) +} +func cascade6() { + ns.ObjectOn(obj251) + ns.ObjectOn(obj252) + ns.FrameTimer(4, cascade7) +} +func cascade7() { + ns.ObjectOn(obj253) + ns.ObjectOn(obj254) + ns.FrameTimer(4, cascade8) +} +func cascade8() { + ns.ObjectOn(obj255) + ns.ObjectOn(obj256) + ns.FrameTimer(4, cascade9) +} +func cascade9() { + ns.ObjectOn(obj257) + ns.ObjectOn(obj258) + ns.FrameTimer(4, cascade10) +} +func cascade10() { + ns.ObjectOn(obj259) + ns.ObjectOn(obj260) +} +func endGauntletTalk1Start() { + ns.TellStory(ns.SwordsmanRecognize, "War02A.scr:HorrendousTalk3Start") +} +func endGauntletTalk1End() { + ns.CancelDialog(obj43) + ns.SetQuestStatus(1, "EnteredGauntlet") + ns.MoveWaypoint(wp55, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagCapture, wp55) + ns.JournalEdit(ns.GetHost(), "War2Gauntlet", 4) + ns.Blind() + ns.FrameTimer(60, backToDunMir) +} +func backToDunMir() { + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), 5323, 5301) +} +func MapInitialize() { + ns.NoWallSound(false) + ns.Music(0, 100) + obj7 = ns.Object("GG1") + obj8 = ns.Object("GG2") + gvar9 = ns.ObjectGroup("FireKnights") + wp10 = ns.Waypoint("WarCryWay") + ns.FrameTimer(3, initGauntletDoor) + obj42 = ns.Object("F2Dant") + ns.StoryPic(obj42, "WarriorPic") + obj43 = ns.Object("F2Sargent") + ns.StoryPic(obj43, "Warrior3Pic") + obj44 = ns.Object("Horrendous") + ns.StoryPic(obj44, "HorrendousPic") + obj45 = ns.Object("RedShirt") + obj46 = ns.Object("F2RedShirt") + ns.StoryPic(obj46, "SkullPic") + ns.SetOwner(ns.GetHost(), obj46) + obj47 = ns.Object("F2ChickenShirt") + ns.StoryPic(obj47, "Townsman2Pic") + obj53 = ns.Object("GearRoom") + obj48 = ns.Object("FromAcademy1") + obj49 = ns.Object("FromAcademy2") + obj50 = ns.Object("ToGauntlet1") + obj51 = ns.Object("ToGauntlet2") + obj52 = ns.Object("GauntletEntrance") + obj36 = ns.Object("GSMover1") + obj37 = ns.Object("GSMover2") + obj38 = ns.Object("GSMover3") + obj39 = ns.Object("GSMover4") + obj40 = ns.Object("GSMover5") + obj41 = ns.Object("GSMover6") + wp55 = ns.Waypoint("PlayerAudio") + wp85 = ns.Waypoint("GearWay") + wp86 = ns.Waypoint("StereoRWay") + wp87 = ns.Waypoint("StereoLWay") + wp88 = ns.Waypoint("BoneCruncherWay") + wp89 = ns.Waypoint("ChickenRunsWay") + wp73 = ns.Waypoint("F5way") + wp75 = ns.Waypoint("F7way") + wp77 = ns.Waypoint("F9way") + wp82 = ns.Waypoint("GSWay1") + wp83 = ns.Waypoint("GSWay3") + wp84 = ns.Waypoint("GSWay5") + gvar15 = ns.ObjectGroup("GauntletEntrySounds") + ns.ObjectGroupOff(gvar15) + ns.LockDoor(obj53) + ns.LockDoor(obj48) + ns.LockDoor(obj49) + ns.LockDoor(obj52) + obj91 = ns.Object("Spider1a") + obj92 = ns.Object("Spider1b") + ns.ObjectOff(obj91) + ns.ObjectOff(obj92) + obj93 = ns.Object("Arena1Door1a") + obj94 = ns.Object("Arena1Door1b") + obj95 = ns.Object("Arena1Door2a") + obj96 = ns.Object("Arena1Door2b") + obj97 = ns.Object("Arena1Switch") + ns.LockDoor(obj95) + ns.LockDoor(obj96) + gvar98 = ns.WallGroup("Arena1Walls") + initFlameGrates() + obj207 = ns.Object("Urchin2a") + obj208 = ns.Object("Urchin2b") + ns.ObjectOff(obj207) + ns.ObjectOff(obj208) + obj209 = ns.Object("Arena2Door1a") + obj210 = ns.Object("Arena2Door1b") + obj211 = ns.Object("Arena2Door2a") + obj212 = ns.Object("Arena2Door2b") + obj213 = ns.Object("Arena2Switch") + ns.LockDoor(obj211) + ns.LockDoor(obj212) + gvar214 = ns.WallGroup("Arena2Walls") + obj220 = ns.Object("Arena3Door1a") + obj221 = ns.Object("Arena3Door1b") + obj222 = ns.Object("Arena3Door2a") + obj223 = ns.Object("Arena3Door2b") + obj224 = ns.Object("Arena3Urchin1") + obj225 = ns.Object("Arena3Urchin2") + obj226 = ns.Object("Arena3Urchin3") + obj227 = ns.Object("Arena3Switch") + ns.ObjectOff(obj224) + ns.ObjectOff(obj225) + ns.ObjectOff(obj226) + ns.LockDoor(obj222) + ns.LockDoor(obj223) + gvar228 = ns.WallGroup("Arena3Walls") + obj230 = ns.Object("Arena4Door1") + obj231 = ns.Object("Arena4Door2") + obj232 = ns.Object("Arena4Switch") + gvar233 = ns.ObjectGroup("Arena4Elevators") + gvar234 = ns.ObjectGroup("Arena4Spikes") + ns.ObjectGroupOff(gvar234) + gvar235 = ns.WallGroup("Arena4Cages") + wp236 = ns.Waypoint("UrchinSoundsWay") + gvar239 = ns.ObjectGroup("ZipperOfDeath") + ns.ObjectGroupOff(gvar239) + obj240 = ns.Object("ZipperDoor") + ns.LockDoor(obj240) + obj241 = ns.Object("am1") + obj242 = ns.Object("am2") + obj243 = ns.Object("am3") + obj244 = ns.Object("am4") + obj245 = ns.Object("am5") + obj246 = ns.Object("am6") + obj247 = ns.Object("am7") + obj248 = ns.Object("am8") + obj249 = ns.Object("am9") + obj250 = ns.Object("am10") + obj251 = ns.Object("am11") + obj252 = ns.Object("am12") + obj253 = ns.Object("am13") + obj254 = ns.Object("am14") + obj255 = ns.Object("am15") + obj256 = ns.Object("am16") + obj257 = ns.Object("am17") + obj258 = ns.Object("am18") + obj259 = ns.Object("am19") + obj260 = ns.Object("am20") + obj261 = ns.Object("asbm1") + wp262 = ns.Waypoint("arsw1") + wp263 = ns.Waypoint("arsw2") + wp264 = ns.Waypoint("arsw3") + wp265 = ns.Waypoint("arsw4") + wp266 = ns.Waypoint("arsw5") + wp267 = ns.Waypoint("arsw6") + wp268 = ns.Waypoint("arsw7") + wp269 = ns.Waypoint("arsw8") + wp270 = ns.Waypoint("arsw9") + wp271 = ns.Waypoint("arsw10") + wp272 = ns.Waypoint("arsw11") + wp273 = ns.Waypoint("arsw12") + wp274 = ns.Waypoint("arsw13") + wp275 = ns.Waypoint("arsw14") + wp276 = ns.Waypoint("arsw15") + wp277 = ns.Waypoint("arsw16") + wp278 = ns.Waypoint("arsw17") + wp279 = ns.Waypoint("arsw18") + wp280 = ns.Waypoint("arsw19") + wp281 = ns.Waypoint("arsw20") + obj283 = ns.Object("FromGauntlet1") + obj284 = ns.Object("FromGauntlet2") + gvar285 = ns.ObjectGroup("FinishGauntletTriggers") + ns.StartupScreen(2) +} +func PlayerDeath() { + ns.DeathScreen(2) +} +func openGauntSecret() { + ns.NoWallSound(false) + ns.WallOpen(ns.Wall(119, 191)) + ns.WallOpen(ns.Wall(120, 192)) +} +func urchins1Die() { + ivar90 += 1 + twoDeadUrchins() +} +func fireGrateReward() { + ns.GiveXp(ns.GetHost(), 100) +} +func fireballHallReward() { + ns.GiveXp(ns.GetHost(), 250) +} +func unlockExitDoor() { + ns.Music(22, 100) + ns.UnlockDoor(obj283) + ns.UnlockDoor(obj284) + flag282 = true + ns.GiveXp(ns.GetHost(), 2500) + ns.MoveObject(obj43, 5071, 4894) + ns.CreatureGuard(obj43, 5071, 4894, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.MoveObject(obj44, 4335, 3151) + ns.MoveObject(obj42, 4335, 3151) +} +func finishGauntlet() { + if !flag282 { + goto LABEL1 + } + flag282 = false + ns.ObjectGroupOff(gvar285) + ns.LookAtObject(obj43, ns.GetHost()) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.SetDialog(obj43, "FALSE", endGauntletTalk1Start, endGauntletTalk1End) + ns.StartDialog(obj43, ns.GetHost()) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war02b/dummy_test.go b/examples/war02b/dummy_test.go new file mode 100644 index 0000000..fcb5500 --- /dev/null +++ b/examples/war02b/dummy_test.go @@ -0,0 +1,6 @@ +package war02b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war02b/war02b.go b/examples/war02b/war02b.go new file mode 100644 index 0000000..4e219a7 --- /dev/null +++ b/examples/war02b/war02b.go @@ -0,0 +1,515 @@ +package war02b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + wp4 ns.WaypointID + ivar5 int + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + wp16 ns.WaypointID + wp17 ns.WaypointID + wp18 ns.WaypointID + wp19 ns.WaypointID + wp20 ns.WaypointID + wp21 ns.WaypointID + wp22 ns.WaypointID + wp23 ns.WaypointID + wp24 ns.WaypointID + wp25 ns.WaypointID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + gvar33 int + gvar34 int + gvar35 int + gvar36 int + gvar37 int + obj38 ns.ObjectID + wp39 ns.WaypointID + flag40 bool + gvar41 int + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + gvar46 ns.ObjectGroupID + gvar47 ns.ObjectGroupID + gvar48 ns.ObjectGroupID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + flag54 bool + flag55 bool + flag56 bool + flag57 bool + flag58 bool + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + wp74 ns.WaypointID + wp75 ns.WaypointID + wp76 ns.WaypointID + wp77 ns.WaypointID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + wp90 ns.WaypointID + wp91 ns.WaypointID +) + +func init() { + ivar5 = 60 + gvar33 = 0 + gvar34 = 1 + gvar35 = 2 + gvar36 = 3 + gvar37 = 4 + flag40 = false + gvar41 = gvar33 + flag54 = false + flag55 = false + flag56 = false + flag57 = false + flag58 = false +} +func PlayerDeath() { + ns.DeathScreen(2) +} +func MapShutdown() { + ns.SetQuestStatus(2, "War02A:EnteredGauntlet") +} +func BlockSecret() { + ns.MoveWaypoint(wp4, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp4) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func OpenBlockSecretExit() { + ns.NoWallSound(false) + ns.WallOpen(ns.Wall(77, 157)) +} +func ResetSquishTrapSEG1() { + ns.Move(obj8, wp25) + ns.Move(obj9, wp26) + ns.Move(obj10, wp27) + ns.Move(obj11, wp28) + ns.Move(obj12, wp29) + ns.Move(obj13, wp30) + ns.Move(obj14, wp31) + ns.Move(obj15, wp32) + ns.AudioEvent(ns.BoulderMove, wp16) + ns.FrameTimer(20, ResetSquishTrapSEG2) +} +func ResetSquishTrapSEG2() { + ns.ObjectOn(obj6) + ns.ObjectOn(obj7) +} +func InitializeSquishBlocks() { + obj6 = ns.Object("SquishTrigger") + obj7 = ns.Object("BoomTrigger") + obj8 = ns.Object("SquishBlock01") + obj9 = ns.Object("SquishBlock02") + obj10 = ns.Object("SquishBlock03") + obj11 = ns.Object("SquishBlock04") + obj12 = ns.Object("SquishBlock05") + obj13 = ns.Object("SquishBlock06") + obj14 = ns.Object("SquishBlock07") + obj15 = ns.Object("SquishBlock08") + wp16 = ns.Waypoint("SquishAudioOrigin") + wp17 = ns.Waypoint("SquishWP01") + wp18 = ns.Waypoint("SquishWP02") + wp19 = ns.Waypoint("SquishWP03") + wp20 = ns.Waypoint("SquishWP04") + wp21 = ns.Waypoint("SquishWP05") + wp22 = ns.Waypoint("SquishWP06") + wp23 = ns.Waypoint("SquishWP07") + wp24 = ns.Waypoint("SquishWP08") + wp25 = ns.Waypoint("SquishWPHome01") + wp26 = ns.Waypoint("SquishWPHome02") + wp27 = ns.Waypoint("SquishWPHome03") + wp28 = ns.Waypoint("SquishWPHome04") + wp29 = ns.Waypoint("SquishWPHome05") + wp30 = ns.Waypoint("SquishWPHome06") + wp31 = ns.Waypoint("SquishWPHome07") + wp32 = ns.Waypoint("SquishWPHome08") +} +func Squish() { + ns.ObjectOff(obj6) + ns.Move(obj8, wp17) + ns.Move(obj9, wp18) + ns.Move(obj10, wp19) + ns.Move(obj11, wp20) + ns.Move(obj12, wp21) + ns.Move(obj13, wp22) + ns.Move(obj14, wp23) + ns.Move(obj15, wp24) + ns.AudioEvent(ns.BoulderMove, wp16) + ns.FrameTimer(ivar5, ResetSquishTrapSEG1) +} +func SquishBoom() { + if ns.IsCaller(obj10) { + goto LABEL1 + } + return +LABEL1: + ns.ObjectOff(obj7) + ns.AudioEvent(ns.HammerMissing, wp16) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) +} +func GearhartDialogStart() { + var v0 int + ns.LookAtObject(obj38, ns.GetHost()) + ns.ObjectGroupOff(gvar48) + v0 = gvar41 + if v0 == gvar33 { + goto LABEL1 + } + if v0 == gvar34 { + goto LABEL2 + } + if v0 == gvar35 { + goto LABEL3 + } + if v0 == gvar36 { + goto LABEL4 + } + if v0 == gvar37 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.DestroyEveryChat() + ns.TellStory(ns.SwordsmanHurt, "War02a:GearhartTalk02") + goto LABEL6 +LABEL2: + ns.DestroyEveryChat() + ns.TellStory(ns.SwordsmanHurt, "War02a:GearhartTalk03") + goto LABEL6 +LABEL3: + ns.DestroyEveryChat() + ns.TellStory(ns.SwordsmanHurt, "War02a:GearhartTalk04") + goto LABEL6 +LABEL4: + ns.DestroyEveryChat() + ns.TellStory(ns.SwordsmanHurt, "War02a:GearhartTalk05") + goto LABEL6 +LABEL5: + ns.DestroyEveryChat() + ns.TellStory(ns.SwordsmanHurt, "War02a:GearhartTalk06") + goto LABEL6 +LABEL6: + return +} +func GearhartDialogEnd() { + var v0 int + ns.ObjectGroupOn(gvar48) + v0 = gvar41 + if v0 == gvar33 { + goto LABEL1 + } + if v0 == gvar34 { + goto LABEL2 + } + if v0 == gvar35 { + goto LABEL3 + } + if v0 == gvar36 { + goto LABEL4 + } + if v0 == gvar37 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.CancelDialog(obj38) + ns.CreatureGuard(obj38, ns.GetWaypointX(wp50), ns.GetWaypointY(wp50), ns.GetWaypointX(wp52), ns.GetWaypointY(wp52), 0) + ns.Pickup(ns.GetHost(), ns.Object("SilverKey01")) + ns.PrintToAll("GeneralPrint:GainedKey") + ns.AudioEvent(ns.KeyDrop, wp39) + gvar41 = gvar34 + goto LABEL6 +LABEL2: + flag55 = true + ns.CreatureGuard(obj38, ns.GetWaypointX(wp53), ns.GetWaypointY(wp53), ns.GetWaypointX(wp52), ns.GetWaypointY(wp52), 0) + gvar41 = gvar35 + goto LABEL6 +LABEL3: + goto LABEL6 +LABEL4: + goto LABEL6 +LABEL5: + flag56 = true + ns.CreatureFollow(obj38, ns.GetHost()) + ns.CancelDialog(obj38) + ns.ObjectOn(obj45) + goto LABEL6 +LABEL6: + return +} +func GearRoomMusic() { + ns.Music(26, 100) +} +func InitializeSwitchPuzzle() { + obj42 = ns.Object("ExitElevator") + obj43 = ns.Object("PlayerSwitch") + obj44 = ns.Object("GearhartSwitch") + obj45 = ns.Object("ExitTrigger") + gvar46 = ns.ObjectGroup("ElevatorSwitches") + gvar47 = ns.ObjectGroup("ElevatorGears") + wp49 = ns.Waypoint("FenceWP") + wp50 = ns.Waypoint("GateWP") + wp51 = ns.Waypoint("GearRoomEntranceWP") + wp52 = ns.Waypoint("PlayerSwitchWP") + wp53 = ns.Waypoint("GearhartSwitchWP") + wp39 = ns.Waypoint("SilverKeyWay") +} +func SetGearhartDialog() { + if !ns.IsCaller(obj38) { + goto LABEL1 + } + ns.StoryPic(obj38, "GearhartPic") + ns.SetDialog(obj38, "FALSE", GearhartDialogStart, GearhartDialogEnd) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + return +} +func GearhartCallForHelp() { + if !flag54 { + goto LABEL1 + } + return +LABEL1: + flag54 = true + ns.Chat(obj38, "War02a:GearhartTalk01") + ns.Move(obj38, wp49) + ns.StoryPic(obj38, "GearhartPic") + ns.SetDialog(obj38, "FALSE", GearhartDialogStart, GearhartDialogEnd) +} +func CheckForBothButtons() { + if flag55 { + goto LABEL1 + } + return +LABEL1: + if !(flag58 && flag57) { + goto LABEL2 + } + ns.Music(16, 100) + ns.ObjectOn(obj42) + ns.ObjectGroupOn(gvar47) + ns.ObjectGroupOff(gvar46) + gvar41 = gvar37 + ns.StartDialog(obj38, ns.GetHost()) +LABEL2: + return +} +func PlayerSwitchActivate() { + flag58 = true + CheckForBothButtons() +} +func PlayerSwitchDeactivate() { + flag58 = false +} +func GearhartSwitchActivate() { + if !ns.IsCaller(obj38) { + goto LABEL1 + } + ns.Chat(obj38, "War02a:GearhartTalk05") +LABEL1: + flag57 = true + CheckForBothButtons() +} +func GearhartSwitchDeactivate() { + flag57 = false +} +func LeaveGearRoom() { + if !ns.IsCaller(obj38) { + goto LABEL1 + } + ns.CreatureGuard(obj38, ns.GetWaypointX(wp51), ns.GetWaypointY(wp51), 0, 0, 0) +LABEL1: + return +} +func EnterGearRoom() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !flag56 { + goto LABEL1 + } + ns.CreatureFollow(obj38, ns.GetHost()) +LABEL1: + return +} +func gotoExit() { + if flag40 { + goto LABEL1 + } + ns.MoveObject(ns.GetHost(), 494, 610) +LABEL1: + return +} +func ExitSewers() { + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(60, gotoExit) +} +func Exit() { + flag40 = true + ns.Frozen(ns.GetHost(), false) +} +func sweepsOn123() { + if ns.IsObjectOn(obj59) { + goto LABEL1 + } + ns.ObjectOn(obj59) +LABEL1: + ns.MoveWaypoint(wp4, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BoulderMove, wp4) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.Move(obj60, wp75) + ns.Move(obj61, wp77) + ns.Move(obj62, wp79) +} +func sweepsOn456() { + ns.MoveWaypoint(wp4, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BoulderMove, wp4) + ns.ObjectOn(obj63) + ns.ObjectOn(obj64) + ns.ObjectOn(obj65) + ns.Move(obj63, wp80) + ns.Move(obj64, wp82) + ns.Move(obj65, wp84) +} +func sweepsOn789() { + ns.MoveWaypoint(wp4, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BoulderMove, wp4) + ns.ObjectOn(obj66) + ns.ObjectOn(obj67) + ns.ObjectOn(obj68) + ns.Move(obj66, wp87) + ns.Move(obj67, wp89) + ns.Move(obj68, wp91) +} +func sweepsOn10thru14() { + ns.ObjectOn(obj69) + ns.ObjectOn(obj70) + ns.ObjectOn(obj71) + ns.ObjectOn(obj72) + ns.ObjectOn(obj73) +} +func sweepsOff123() { + ns.Move(obj60, wp74) + ns.Move(obj61, wp76) + ns.Move(obj62, wp78) +} +func sweepsOff456() { + ns.Move(obj63, wp81) + ns.Move(obj64, wp83) + ns.Move(obj65, wp85) +} +func sweepsOff789() { + ns.Move(obj66, wp86) + ns.Move(obj67, wp88) + ns.Move(obj68, wp90) +} +func sweepsOff10thru14() { + ns.ObjectOff(obj69) + ns.ObjectOff(obj70) + ns.ObjectOff(obj71) + ns.ObjectOff(obj72) + ns.ObjectOff(obj73) +} +func MapInitialize() { + obj38 = ns.Object("F2Gearhart") + obj60 = ns.Object("SweeperMover1") + obj61 = ns.Object("SweeperMover2") + obj62 = ns.Object("SweeperMover3") + obj63 = ns.Object("SweeperMover4") + obj64 = ns.Object("SweeperMover5") + obj65 = ns.Object("SweeperMover6") + obj66 = ns.Object("SweeperMover7") + obj67 = ns.Object("SweeperMover8") + obj68 = ns.Object("SweeperMover9") + obj69 = ns.Object("SweeperMover10") + obj70 = ns.Object("SweeperMover11") + obj71 = ns.Object("SweeperMover12") + obj72 = ns.Object("SweeperMover13") + obj73 = ns.Object("SweeperMover14") + gvar48 = ns.ObjectGroup("EveryMonsterOnMap") + wp4 = ns.Waypoint("AudioOrigin") + wp74 = ns.Waypoint("SweeperWay1a") + wp75 = ns.Waypoint("SweeperWay1b") + wp76 = ns.Waypoint("SweeperWay2a") + wp77 = ns.Waypoint("SweeperWay2b") + wp78 = ns.Waypoint("SweeperWay3a") + wp79 = ns.Waypoint("SweeperWay3b") + wp80 = ns.Waypoint("SweeperWay4") + wp81 = ns.Waypoint("SweeperWay4a") + wp82 = ns.Waypoint("SweeperWay5") + wp83 = ns.Waypoint("SweeperWay5a") + wp84 = ns.Waypoint("SweeperWay6") + wp85 = ns.Waypoint("SweeperWay6a") + wp86 = ns.Waypoint("SweeperWay7") + wp87 = ns.Waypoint("SweeperWay7a") + wp88 = ns.Waypoint("SweeperWay8") + wp89 = ns.Waypoint("SweeperWay8a") + wp90 = ns.Waypoint("SweeperWay9") + wp91 = ns.Waypoint("SweeperWay9a") + obj59 = ns.Object("Spider01") + InitializeSwitchPuzzle() + InitializeSquishBlocks() +} +func MapEntry() { + ns.UnBlind() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapShutdown": + MapShutdown() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war03a/dummy_test.go b/examples/war03a/dummy_test.go new file mode 100644 index 0000000..6675986 --- /dev/null +++ b/examples/war03a/dummy_test.go @@ -0,0 +1,6 @@ +package war03a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war03a/war03a.go b/examples/war03a/war03a.go new file mode 100644 index 0000000..ac0a5cd --- /dev/null +++ b/examples/war03a/war03a.go @@ -0,0 +1,437 @@ +package war03a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + gvar22 ns.ObjectGroupID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + gvar27 ns.WallGroupID + gvar28 int + gvar29 int + gvar30 int + gvar31 int + gvar32 int + gvar33 int + gvar34 int + gvar35 int + gvar36 int + gvar37 int + gvar38 int + gvar39 int + gvar40 ns.ObjectGroupID + gvar41 ns.ObjectGroupID + gvar42 ns.ObjectGroupID + obj43 ns.ObjectID + obj44 ns.ObjectID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + flag48 bool +) + +func init() { + gvar28 = 0 + gvar29 = 1 + gvar30 = gvar28 + gvar31 = 0 + gvar32 = 1 + gvar33 = gvar31 + gvar34 = 0 + gvar35 = 1 + gvar36 = gvar34 + gvar37 = 0 + gvar38 = 1 + gvar39 = gvar37 + flag48 = true +} +func PlayerDeath() { + ns.DeathScreen(3) +} +func BanditAttack() { + ns.Chat(obj26, "War01A.scr:Bully1") +} +func HorrendousTalkStart() { + var v0 int + v0 = gvar30 + if v0 == gvar28 { + goto LABEL1 + } + if v0 == gvar29 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03a:HorrendousSpeech") + gvar30 = gvar29 + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03a:HorrendousEnd") + goto LABEL3 +LABEL3: + return +} +func HorrendousTalkEnd() { + ns.JournalEntry(ns.GetHost(), "War03aIxQuest", 2) +} +func DunMirGuard1TalkStart() { + ns.LookAtObject(obj8, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03a:DunMirGuard1") +} +func DunMirGuard1TalkEnd() { +} +func DunMirGuard2TalkStart() { + ns.LookAtObject(obj9, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03a:DunMirGuard2") +} +func DunMirGuard2TalkEnd() { +} +func DunMirGuard3TalkStart() { + ns.TellStory(ns.SwordsmanHurt, "War03a:DunMirGuard3") +} +func DunMirGuard3TalkEnd() { +} +func MineGuardTalkStart() { + ns.LookAtObject(obj15, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03a:MineGuard") +} +func MineGuardTalkEnd() { +} +func GalavaGuard1TalkStart() { + var v0 int + ns.LookAtObject(obj11, ns.GetHost()) + v0 = gvar33 + if v0 == gvar31 { + goto LABEL1 + } + if v0 == gvar32 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03a:GalavaGuardWarn") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03a:GalavaGuardEnd") + goto LABEL3 +LABEL3: + return +} +func GalavaGuard1TalkEnd() { + var v0 int + v0 = gvar33 + if v0 == gvar31 { + goto LABEL1 + } + if v0 == gvar32 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func GalavaGuard2TalkStart() { + var v0 int + ns.LookAtObject(obj12, ns.GetHost()) + v0 = gvar33 + if v0 == gvar31 { + goto LABEL1 + } + if v0 == gvar32 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03a:GalavaGuardEnd") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03a:GalavaGuardEnd") + goto LABEL3 +LABEL3: + return +} +func GalavaGuard2TalkEnd() { + var v0 int + v0 = gvar33 + if v0 == gvar31 { + goto LABEL1 + } + if v0 == gvar32 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func IxGuard1TalkStart() { + var v0 int + ns.LookAtObject(obj18, ns.GetHost()) + v0 = gvar36 + if v0 == gvar34 { + goto LABEL1 + } + if v0 == gvar35 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03a:IxGuard1Intro") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03a:IxGuard1End") + goto LABEL3 +LABEL3: + return +} +func IxGuard1TalkEnd() { + var v0 int + v0 = gvar36 + if v0 == gvar34 { + goto LABEL1 + } + if v0 == gvar35 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.UnlockDoor(obj20) + ns.UnlockDoor(obj21) + gvar36 = gvar35 + gvar39 = gvar38 + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func IxGuard2TalkStart() { + var v0 int + ns.LookAtObject(obj19, ns.GetHost()) + v0 = gvar39 + if v0 == gvar37 { + goto LABEL1 + } + if v0 == gvar38 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03a:IxGuard2Intro") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03a:IxGuard2End") + goto LABEL3 +LABEL3: + return +} +func IxGuard2TalkEnd() { + var v0 int + v0 = gvar39 + if v0 == gvar37 { + goto LABEL1 + } + if v0 == gvar38 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.UnlockDoor(obj20) + ns.UnlockDoor(obj21) + gvar39 = gvar38 + gvar36 = gvar35 + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(22, 100) +LABEL1: + return +} +func MapEntry() { + PlayWanderMusic() + ns.UnBlind() + if ns.GetQuestStatus("War03b:QuestComplete") != 1 { + goto LABEL1 + } + ns.CancelDialog(obj18) + ns.CancelDialog(obj19) +LABEL1: + return +} +func MapInitialize() { + obj4 = ns.Object("MissionTrig") + obj8 = ns.Object("Lance") + obj9 = ns.Object("Kenneth") + obj10 = ns.Object("Brigadin") + obj11 = ns.Object("Rastur") + obj12 = ns.Object("Kirik") + obj13 = ns.Object("GalavaGate1") + obj14 = ns.Object("GalavaGate2") + ns.LockDoor(obj13) + ns.LockDoor(obj14) + obj15 = ns.Object("Millard") + obj16 = ns.Object("MineDoor1") + obj17 = ns.Object("MineDoor2") + ns.LockDoor(obj16) + ns.LockDoor(obj17) + gvar22 = ns.ObjectGroup("GuardGroup") + obj18 = ns.Object("Janero") + obj19 = ns.Object("Horst") + obj20 = ns.Object("IxGate01") + obj21 = ns.Object("IxGate02") + ns.LockDoor(obj20) + ns.LockDoor(obj21) + obj23 = ns.Object("Loproc") + obj24 = ns.Object("BiffordByzanti") + obj25 = ns.Object("GarretByzanti") + ns.GroupSetOwner(ns.GetHost(), gvar22) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj10) + gvar40 = ns.ObjectGroup("WaspGroup1") + gvar41 = ns.ObjectGroup("WaspGroup2") + obj43 = ns.Object("Wolf01") + gvar42 = ns.ObjectGroup("FishGroup") + ns.GroupWander(gvar40) + ns.GroupWander(gvar41) + ns.Wander(obj43) + ns.GroupWander(gvar42) + obj44 = ns.Object("Osborn") + ns.Damage(obj44, 0, 200, 2) + ns.StoryPic(obj5, "HorrendousPic") + ns.SetDialog(obj5, ns.NORMAL, HorrendousTalkStart, HorrendousTalkEnd) + ns.StoryPic(obj8, "Warrior2Pic") + ns.SetDialog(obj8, ns.NORMAL, DunMirGuard1TalkStart, DunMirGuard1TalkEnd) + ns.StoryPic(obj9, "Warrior3Pic") + ns.SetDialog(obj9, ns.NORMAL, DunMirGuard2TalkStart, DunMirGuard2TalkEnd) + ns.StoryPic(obj10, "Warrior4Pic") + ns.SetDialog(obj10, ns.NORMAL, DunMirGuard3TalkStart, DunMirGuard3TalkEnd) + ns.StoryPic(obj11, "WizardGuard1Pic") + ns.SetDialog(obj11, ns.NORMAL, GalavaGuard1TalkStart, GalavaGuard1TalkEnd) + ns.StoryPic(obj12, "WizardGuard2Pic") + ns.SetDialog(obj12, ns.NORMAL, GalavaGuard2TalkStart, GalavaGuard2TalkEnd) + ns.StoryPic(obj15, "MalePic2") + ns.SetDialog(obj15, ns.NORMAL, MineGuardTalkStart, MineGuardTalkEnd) + ns.StoryPic(obj18, "IxGuard1Pic") + ns.SetDialog(obj18, ns.NORMAL, IxGuard1TalkStart, IxGuard1TalkEnd) + ns.StoryPic(obj19, "IxGuard2Pic") + ns.SetDialog(obj19, ns.NORMAL, IxGuard2TalkStart, IxGuard2TalkEnd) + obj6 = ns.Object("DMDoorL") + obj7 = ns.Object("DMDoorR") + ns.LockDoor(obj6) + ns.LockDoor(obj7) + obj26 = ns.Object("Bandit01") + gvar27 = ns.WallGroup("RogueSecretWallGroup") + wp45 = ns.Waypoint("Secret01WP") + wp46 = ns.Waypoint("Secret01aWP") + wp47 = ns.Waypoint("Secret02WP") +} +func SetHorrendous() { + ns.ObjectOff(obj5) + ns.MoveObject(obj5, 5569, 5071) +} +func ClearIxGuardDialog() { + ns.CancelDialog(obj18) + ns.CancelDialog(obj19) +} +func OpenRogueSecretWallGroup() { + ns.WallGroupOpen(gvar27) +} +func WolfIdle() { + ns.CreatureIdle(obj43) +} +func WaspIdle() { + ns.CreatureGroupIdle(gvar41) +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlaySubMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(20, 100) +LABEL1: + return +} +func PlayActionMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(5, 100) +LABEL1: + return +} +func RobberRecognize() { + if !(ns.IsCaller(ns.GetHost()) && flag48) { + goto LABEL1 + } + flag48 = false + ns.Attack(ns.GetTrigger(), ns.GetHost()) + ns.Chat(ns.GetTrigger(), "War01A.scr:Bully1") +LABEL1: + return +} +func RobberDie() { + ns.DestroyEveryChat() +} +func Secret01() { + ns.AudioEvent(ns.SecretFound, wp45) + ns.AudioEvent(ns.SecretFound, wp46) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func Secret02() { + ns.AudioEvent(ns.SecretFound, wp47) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapEntry": + MapEntry() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war03b/dummy_test.go b/examples/war03b/dummy_test.go new file mode 100644 index 0000000..e567376 --- /dev/null +++ b/examples/war03b/dummy_test.go @@ -0,0 +1,6 @@ +package war03b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war03b/war03b.go b/examples/war03b/war03b.go new file mode 100644 index 0000000..1a2fedb --- /dev/null +++ b/examples/war03b/war03b.go @@ -0,0 +1,1059 @@ +package war03b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + obj7 ns.ObjectID + obj8 ns.ObjectID + ivar9 int + gvar10 int + ivar11 int + gvar12 int + obj13 [2]ns.ObjectID + gvar14 ns.ObjectGroupID + obj15 ns.ObjectID + obj16 ns.ObjectID + wp17 ns.WaypointID + obj18 ns.ObjectID + obj19 ns.ObjectID + gvar20 ns.ObjectID + gvar21 ns.ObjectID + gvar22 ns.ObjectGroupID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + gvar43 ns.ObjectGroupID + gvar44 ns.ObjectGroupID + gvar45 ns.ObjectGroupID + gvar46 ns.ObjectGroupID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + gvar59 int + wp60 ns.WaypointID + gvar61 int + gvar62 int + gvar63 int + gvar64 int + gvar65 int + gvar66 int + gvar67 int + gvar68 int + gvar69 int + gvar70 int + gvar71 int + gvar72 int + gvar73 int + gvar74 int + gvar75 int + gvar76 int + gvar77 int + gvar78 int + gvar79 int + gvar80 int + gvar81 int + gvar82 int + gvar83 int + gvar84 int + gvar85 int + gvar86 int + gvar87 int + gvar88 int + gvar89 int + gvar90 int + gvar91 int + gvar92 int + gvar93 int + gvar94 int + gvar95 int + gvar96 int + gvar97 int + obj98 ns.ObjectID + gvar99 ns.WallGroupID + wp100 ns.WaypointID + wp101 ns.WaypointID + wp102 ns.WaypointID +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + ivar9 = 200 + gvar10 = 2 + ivar11 = 0 + gvar12 = gvar4 + gvar61 = 0 + gvar62 = 1 + gvar63 = 2 + gvar64 = 3 + gvar65 = gvar61 + gvar66 = 0 + gvar67 = 1 + gvar68 = 2 + gvar69 = 3 + gvar70 = gvar66 + gvar71 = 0 + gvar72 = 1 + gvar73 = gvar71 + gvar74 = 0 + gvar75 = 1 + gvar76 = gvar74 + gvar77 = 0 + gvar78 = 1 + gvar79 = gvar77 + gvar80 = 0 + gvar81 = 1 + gvar82 = gvar80 + gvar83 = 0 + gvar84 = 1 + gvar85 = gvar83 + gvar86 = 0 + gvar87 = 1 + gvar88 = gvar86 + gvar89 = 0 + gvar90 = 1 + gvar91 = 2 + gvar92 = 3 + gvar93 = gvar89 + gvar94 = 0 + gvar95 = 1 + gvar96 = 2 + gvar97 = gvar94 +} +func PlayerDeath() { + ns.DeathScreen(3) +} +func ReleaseCharmedWolf(a1 int) { + var v0 int + v0 = a1 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.WallOpen(ns.Wall(128, 106)) + ns.CreatureFollow(obj13[a1], ns.GetHost()) + ns.PauseObject(obj13[a1], 30) + ns.AggressionLevel(obj13[a1], 0.83) + ns.MakeFriendly(obj13[a1]) + ns.BecomePet(obj13[a1]) + goto LABEL5 +LABEL2: + ns.WallOpen(ns.Wall(130, 104)) + ns.CreatureFollow(obj13[a1], ns.GetHost()) + ns.PauseObject(obj13[a1], 30) + ns.AggressionLevel(obj13[a1], 0.83) + ns.MakeFriendly(obj13[a1]) + ns.BecomePet(obj13[a1]) + goto LABEL5 +LABEL3: + ns.WallOpen(ns.Wall(55, 109)) + ns.EnchantOff(obj13[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj13[a1], ns.GetHost()) + ns.AggressionLevel(obj13[a1], 0.83) + ns.MakeFriendly(obj13[a1]) + ns.BecomePet(obj13[a1]) + goto LABEL5 +LABEL4: + ns.WallOpen(ns.Wall(53, 107)) + ns.EnchantOff(obj13[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj13[a1], ns.GetHost()) + ns.AggressionLevel(obj13[a1], 0.83) + ns.MakeFriendly(obj13[a1]) + ns.BecomePet(obj13[a1]) + goto LABEL5 +LABEL5: + return +} +func HenrickTalkStart() { + var v0 int + v0 = gvar12 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj7, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSalesPitchA") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj7, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSalesPitchB") + goto LABEL4 +LABEL3: + ns.LookAtObject(obj7, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNoMoreWolves") + goto LABEL4 +LABEL4: + return +} +func HenrickTalkEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + v6 int + v7 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v7 = gvar12 + if v7 == gvar4 { + goto LABEL1 + } + if v7 == gvar5 { + goto LABEL2 + } + if v7 == gvar6 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v1 = ns.GetAnswer(obj7) + v5 = v1 + if v5 == v2 { + goto LABEL5 + } + if v5 == v3 { + goto LABEL6 + } + if v5 == v4 { + goto LABEL7 + } + goto LABEL8 +LABEL5: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar9) { + goto LABEL9 + } + ns.SetDialog(obj7, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNotEnoughGold") + goto LABEL10 +LABEL9: + ns.ChangeGold(ns.GetHost(), -ivar9) + gvar12 = gvar5 + ReleaseCharmedWolf(ivar11) + ivar11 += 1 + ns.SetDialog(obj7, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSaleSuccessful") +LABEL10: + goto LABEL8 +LABEL6: + goto LABEL8 +LABEL7: + goto LABEL8 +LABEL8: + goto LABEL4 +LABEL2: + v1 = ns.GetAnswer(obj7) + v6 = v1 + if v6 == v2 { + goto LABEL11 + } + if v6 == v3 { + goto LABEL12 + } + if v6 == v4 { + goto LABEL13 + } + goto LABEL14 +LABEL11: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar9) { + goto LABEL15 + } + ns.SetDialog(obj7, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNotEnoughGold") + goto LABEL16 +LABEL15: + ns.ChangeGold(ns.GetHost(), -ivar9) + ReleaseCharmedWolf(ivar11) + ivar11 += 1 + ns.SetDialog(obj7, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSaleSuccessful") + if !(ivar11 >= 2) { + goto LABEL16 + } + gvar12 = gvar6 + ns.SetDialog(obj7, ns.NORMAL, HenrickTalkStart, HenrickTalkEnd) +LABEL16: + goto LABEL14 +LABEL12: + goto LABEL14 +LABEL13: + goto LABEL14 +LABEL14: + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func NullDialogStart() { +} +func InitializeHenrick() { + ns.StoryPic(obj7, "HenrickPic") + ns.SetDialog(obj7, ns.YESNO, HenrickTalkStart, HenrickTalkEnd) +} +func ResetHenrickDialogChoice() { + ns.SetDialog(obj7, ns.YESNO, HenrickTalkStart, HenrickTalkEnd) +} +func AirshipCaptainAppear() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + _ = v3 + _ = v2 + v0 = ns.GetWaypointX(wp55) + v1 = ns.GetWaypointY(wp55) + v2 = ns.GetWaypointX(wp57) + v3 = ns.GetWaypointY(wp57) + ns.MoveObject(obj54, v0, v1) + ns.FrameTimer(1, CaptainGuard) +} +func MayorPickup() { + ns.MoveObject(ns.Object("War03c:MayorScepter"), 4963, 453) + ns.Pickup(ns.GetHost(), obj19) +} +func MayorSpeaks() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetObjectX(obj15) + v1 = ns.GetObjectY(obj15) + v2 = ns.GetObjectX(ns.GetHost()) + v3 = ns.GetObjectY(ns.GetHost()) + if !(ns.Distance(v0, v1, v2, v3) < 150) { + goto LABEL1 + } + ns.LookAtObject(obj15, ns.GetHost()) + ns.StartDialog(obj15, ns.GetHost()) + goto LABEL2 +LABEL1: + ns.FrameTimer(22, MayorSpeaks) +LABEL2: + return +} +func MayorGuardTime() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp58) + v1 = ns.GetWaypointY(wp58) + v2 = ns.GetWaypointX(wp17) + v3 = ns.GetWaypointY(wp17) + ns.CreatureGuard(obj15, v0, v1, v2, v3, 0) + ns.StoryPic(obj15, "TheogrinPic") + ns.SetDialog(obj15, ns.NORMAL, MayorTalkStart, MayorTalkEnd) +} +func MayorTalkStart() { + var v0 int + if !ns.HasItem(ns.GetHost(), ns.Object("War03c:MayorScepter")) { + goto LABEL1 + } + gvar65 = gvar63 +LABEL1: + v0 = gvar65 + if v0 == gvar61 { + goto LABEL2 + } + if v0 == gvar62 { + goto LABEL3 + } + if v0 == gvar63 { + goto LABEL4 + } + if v0 == gvar64 { + goto LABEL5 + } + goto LABEL6 +LABEL2: + ns.LookAtObject(obj15, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorIntro") + goto LABEL6 +LABEL3: + ns.CreatureIdle(obj15) + ns.LookAtObject(obj15, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorPre") + goto LABEL6 +LABEL4: + ns.LookAtObject(obj15, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorPost") + goto LABEL6 +LABEL5: + ns.LookAtObject(obj15, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorPost2") + goto LABEL6 +LABEL6: + return +} +func MayorsGuardTalkStart() { + var v0 int + ns.LookAtObject(obj16, ns.GetHost()) + v0 = gvar93 + if v0 == gvar89 { + goto LABEL1 + } + if v0 == gvar90 { + goto LABEL2 + } + if v0 == gvar91 { + goto LABEL3 + } + if v0 == gvar92 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorsGuardIntro") + goto LABEL5 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorsGuardPre") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorsGuardPost") + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorsGuardPost2") + goto LABEL5 +LABEL5: + return +} +func GatekeeperTalkStart() { + var v0 int + ns.LookAtObject(obj23, ns.GetHost()) + v0 = gvar88 + if v0 == gvar86 { + goto LABEL1 + } + if v0 == gvar87 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:GatekeeperPre") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:GatekeeperPost") + goto LABEL3 +LABEL3: + return +} +func BarkeeperTalkStart() { + var v0 int + ns.LookAtObject(obj24, ns.GetHost()) + v0 = gvar85 + if v0 == gvar83 { + goto LABEL1 + } + if v0 == gvar84 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:BarkeeperPre") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:BarkeeperPost") + goto LABEL3 +LABEL3: + return +} +func ContestGuardTalkStart() { + ns.LookAtObject(obj25, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:ContestGuard") +} +func BridgeGuardTalkStart() { + var v0 int + ns.LookAtObject(obj36, ns.GetHost()) + v0 = gvar97 + if v0 == gvar94 { + goto LABEL1 + } + if v0 == gvar95 { + goto LABEL2 + } + if v0 == gvar96 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:BridgeGuardIntro") + goto LABEL4 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:BridgeGuardPre") + goto LABEL4 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War03b:BridgeGuardPost") + goto LABEL4 +LABEL4: + return +} +func Townsman1TalkStart() { + var v0 int + ns.CreatureIdle(obj26) + ns.LookAtObject(obj26, ns.GetHost()) + v0 = gvar73 + if v0 == gvar71 { + goto LABEL1 + } + if v0 == gvar72 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:T1Pre") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:T1Post") + goto LABEL3 +LABEL3: + return +} +func Townsman2TalkStart() { + var v0 int + ns.CreatureIdle(obj27) + ns.LookAtObject(obj27, ns.GetHost()) + v0 = gvar76 + if v0 == gvar74 { + goto LABEL1 + } + if v0 == gvar75 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:T2Pre") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:T2Post") + goto LABEL3 +LABEL3: + return +} +func Townsman3TalkStart() { + var v0 int + ns.LookAtObject(obj28, ns.GetHost()) + v0 = gvar79 + if v0 == gvar77 { + goto LABEL1 + } + if v0 == gvar78 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Chat(obj28, "War02a:NewTownsman1") + goto LABEL3 +LABEL2: + ns.Chat(obj28, "War02a:NewTownsman2") + goto LABEL3 +LABEL3: + return +} +func Townsman4TalkStart() { + var v0 int + ns.LookAtObject(obj29, ns.GetHost()) + v0 = gvar82 + if v0 == gvar80 { + goto LABEL1 + } + if v0 == gvar81 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:T4Pre") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:T4Post") + goto LABEL3 +LABEL3: + return +} +func AldwynTalkStart() { + var v0 int + ns.LookAtObject(obj33, ns.GetHost()) + if !ns.HasItem(ns.GetHost(), ns.Object("War03c:MayorScepter")) { + goto LABEL1 + } + gvar70 = gvar68 +LABEL1: + v0 = gvar70 + if v0 == gvar66 { + goto LABEL2 + } + if v0 == gvar67 { + goto LABEL3 + } + if v0 == gvar68 { + goto LABEL4 + } + if v0 == gvar69 { + goto LABEL5 + } + goto LABEL6 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:AldwynIntro") + goto LABEL6 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War03b:AldwynPre") + goto LABEL6 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "War03b:AldwynPost") + goto LABEL6 +LABEL5: + ns.TellStory(ns.SwordsmanHurt, "War03b:AldwynPost2") + goto LABEL6 +LABEL6: + return +} +func AirshipCaptainTalkStart() { + ns.TellStory(ns.SwordsmanHurt, "War03b:AirshipCaptainIxSpeech") +} +func PlayerExit() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp56) + v1 = ns.GetWaypointY(wp56) + ns.MoveObject(ns.GetHost(), v0, v1) + ns.Frozen(ns.GetHost(), false) +} +func Maiden1TalkStart() { + ns.CreatureIdle(obj30) + ns.LookAtObject(obj30, ns.GetHost()) + ns.LookAtObject(obj30, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:Maiden1") +} +func Maiden2TalkStart() { + ns.CreatureIdle(obj31) + ns.LookAtObject(obj31, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:Maiden2") +} +func MayorTalkEnd() { + var v0 int + v0 = gvar65 + if v0 == gvar61 { + goto LABEL1 + } + if v0 == gvar62 { + goto LABEL2 + } + if v0 == gvar63 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.Move(obj15, wp58) + ns.Print("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "War03bGetScepter", 2) + ns.JournalEdit(ns.GetHost(), "War03aIxQuest", 4) + gvar65 = gvar62 + gvar93 = gvar90 + gvar97 = gvar95 + gvar88 = gvar86 + ns.CancelDialog(obj15) + goto LABEL4 +LABEL2: + ns.CreatureGuard(obj15, ns.GetWaypointX(wp58), ns.GetWaypointY(wp58), ns.GetWaypointX(wp17), ns.GetWaypointY(wp17), 0) + goto LABEL4 +LABEL3: + gvar65 = gvar64 + gvar93 = gvar92 + gvar70 = gvar69 + gvar20 = ns.GetLastItem(ns.GetHost()) + for { + if gvar20 == 0 { + goto LABEL5 + } + gvar21 = ns.GetPreviousItem(gvar20) + if gvar20 != ns.Object("War03c:MayorScepter") { + goto LABEL6 + } + ns.Delete(gvar20) + LABEL6: + gvar20 = gvar21 + } +LABEL5: + ns.Drop(obj15, obj19) + ns.FrameTimer(1, MayorPickup) + ns.JournalEdit(ns.GetHost(), "War03bGetScepter", 4) + ns.GiveXp(ns.GetHost(), 1000) + AirshipCaptainAppear() + goto LABEL4 +LABEL4: + return +} +func MayorsGuardTalkEnd() { +} +func GatekeeperTalkEnd() { +} +func BarkeeperTalkEnd() { +} +func ContestGuardTalkEnd() { +} +func BridgeGuardTalkEnd() { +} +func Townsman1TalkEnd() { + ns.Wander(obj26) +} +func Townsman2TalkEnd() { + ns.Wander(obj27) +} +func Townsman3TalkEnd() { + ns.Wander(obj28) +} +func Townsman4TalkEnd() { +} +func AldwynTalkEnd() { + var v0 int + v0 = gvar70 + if v0 == gvar66 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.Drop(obj33, obj34) + ns.Drop(obj33, obj35) + ns.FrameTimer(1, FieldGuidePickup) + gvar70 = gvar67 + goto LABEL2 +LABEL2: + return +} +func AirshipCaptainTalkEnd() { + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(60, PlayerExit) + ns.CancelDialog(obj54) +} +func PlayTownMusic() { + ns.Music(15, 100) +} +func Maiden1TalkEnd() { + ns.Wander(obj30) +} +func Maiden2TalkEnd() { +} +func JacobDialogStart() { + ns.LookAtObject(obj41, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02A:JailerTalk01") +} +func JacobDialogEnd() { +} +func MapInitialize() { + obj42 = ns.Object("CaveDoor") + ns.LockDoor(obj42) + obj41 = ns.Object("Jacob") + wp60 = ns.Waypoint("WellWP") + gvar22 = ns.ObjectGroup("QuestTrigGroup") + obj15 = ns.Object("MayorTheogrin") + wp17 = ns.Waypoint("MayorLook") + obj18 = ns.Object("MayorScepter") + obj19 = ns.Object("MayorGift") + ns.Pickup(obj15, obj19) + wp58 = ns.Waypoint("MayorHome") + ns.Pickup(obj15, obj19) + gvar14 = ns.ObjectGroup("MayorTrigs") + obj37 = ns.Object("IxGuard1") + obj38 = ns.Object("IxGuard2") + obj23 = ns.Object("Geoff") + obj16 = ns.Object("Mayor's_Guard") + obj24 = ns.Object("Barkeeper") + obj39 = ns.Object("BelforByzanti") + obj40 = ns.Object("Mystic") + obj36 = ns.Object("BridgeGuard") + obj25 = ns.Object("ContestGuard") + obj26 = ns.Object("Seth") + obj27 = ns.Object("Rayner") + obj28 = ns.Object("Townsman3") + obj29 = ns.Object("Floyd") + obj7 = ns.Object("Henrick") + obj8 = ns.Object("Wolf1") + obj32 = ns.Object("Wolf2") + obj30 = ns.Object("F6Townswoman1") + obj31 = ns.Object("F6Townswoman4") + obj13[0] = ns.Object("Wolf1") + obj13[1] = ns.Object("Wolf2") + ns.Wander(obj26) + ns.Wander(obj27) + ns.Wander(obj28) + gvar43 = ns.ObjectGroupID(ns.Object("WaitTrig1")) // FIXME + gvar44 = ns.ObjectGroupID(ns.Object("WaitTrig2")) // FIXME + gvar45 = ns.ObjectGroupID(ns.Object("WaitTrig3")) // FIXME + gvar46 = ns.ObjectGroup("NPCs") + obj47 = ns.Object("IxGate01") + obj48 = ns.Object("IxGate02") + obj49 = ns.Object("IxGate03") + obj50 = ns.Object("IxGate04") + obj51 = ns.Object("TempDoorL") + obj52 = ns.Object("TempDoorR") + obj53 = ns.Object("AldwynDoor") + ns.LockDoor(obj49) + ns.LockDoor(obj50) + ns.LockDoor(obj51) + ns.LockDoor(obj52) + ns.LockDoor(obj53) + obj54 = ns.Object("AirshipCaptain") + wp55 = ns.Waypoint("AirshipCaptainWP") + wp57 = ns.Waypoint("AirshipCaptainLook") + wp56 = ns.Waypoint("ExitWP") + ns.GroupSetOwner(ns.GetHost(), gvar46) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj16) + ns.SetOwner(ns.GetHost(), obj36) + ns.SetOwner(ns.GetHost(), obj25) + ns.SetOwner(ns.GetHost(), obj24) + ns.SetOwner(ns.GetHost(), obj23) + ns.SetOwner(ns.GetHost(), obj33) + ns.SetOwner(ns.GetHost(), obj26) + ns.SetOwner(ns.GetHost(), obj27) + ns.SetOwner(ns.GetHost(), obj28) + ns.SetOwner(ns.GetHost(), obj29) + ns.SetOwner(ns.GetHost(), obj54) + ns.SetOwner(ns.GetHost(), obj37) + ns.SetOwner(ns.GetHost(), obj38) + ns.SetOwner(ns.GetHost(), obj39) + ns.SetOwner(ns.GetHost(), obj40) + ns.SetOwner(ns.GetHost(), obj8) + ns.SetOwner(ns.GetHost(), obj32) + ns.SetOwner(ns.GetHost(), obj7) + ns.SetOwner(ns.GetHost(), obj30) + ns.SetOwner(ns.GetHost(), obj31) + ns.SetOwner(ns.GetHost(), obj41) + ns.StoryPic(obj23, "MalePic10") + ns.SetDialog(obj23, ns.NORMAL, GatekeeperTalkStart, GatekeeperTalkEnd) + ns.StoryPic(obj15, "TheogrinPic") + ns.SetDialog(obj15, ns.NORMAL, MayorTalkStart, MayorTalkEnd) + ns.StoryPic(obj16, "Warrior3Pic") + ns.SetDialog(obj16, ns.NORMAL, MayorsGuardTalkStart, MayorsGuardTalkEnd) + ns.StoryPic(obj25, "MalePic4") + ns.SetDialog(obj25, ns.NORMAL, ContestGuardTalkStart, ContestGuardTalkEnd) + ns.StoryPic(obj36, "MalePic9") + ns.SetDialog(obj36, ns.NORMAL, BridgeGuardTalkStart, BridgeGuardTalkEnd) + ns.StoryPic(obj26, "Townsman1Pic") + ns.SetDialog(obj26, ns.NORMAL, Townsman1TalkStart, Townsman1TalkEnd) + ns.StoryPic(obj27, "Townsman2Pic") + ns.SetDialog(obj27, ns.NORMAL, Townsman2TalkStart, Townsman2TalkEnd) + ns.StoryPic(obj28, "Townsman3Pic") + ns.SetDialog(obj28, ns.NORMAL, Townsman3TalkStart, Townsman3TalkEnd) + ns.StoryPic(obj29, "Townsman3Pic") + ns.SetDialog(obj29, ns.NORMAL, Townsman4TalkStart, Townsman4TalkEnd) + ns.StoryPic(obj33, "AldwynPic") + ns.SetDialog(obj33, ns.NORMAL, AldwynTalkStart, AldwynTalkEnd) + ns.StoryPic(obj54, "AirshipCaptainPic") + ns.SetDialog(obj54, ns.NORMAL, AirshipCaptainTalkStart, AirshipCaptainTalkEnd) + ns.StoryPic(obj30, "MaidenPic2") + ns.SetDialog(obj30, ns.NORMAL, Maiden1TalkStart, Maiden1TalkEnd) + ns.StoryPic(obj31, "MaidenPic6") + ns.SetDialog(obj31, ns.NORMAL, Maiden2TalkStart, Maiden2TalkEnd) + ns.StoryPic(obj41, "WardenPic") + ns.SetDialog(obj41, ns.NORMAL, JacobDialogStart, JacobDialogEnd) + obj98 = ns.Object("Bookcase") + wp100 = ns.Waypoint("BookcaseWP") + gvar99 = ns.WallGroup("MayorSecretWallGroup") + wp101 = ns.Waypoint("Secret01WP") + wp102 = ns.Waypoint("Secret02WP") + InitializeHenrick() +} +func MapEntry() { + obj18 = ns.Object("War03c:MayorScepter") + ns.UnBlind() + PlayTownMusic() +} +func QuestSwitch() { + if !ns.HasItem(ns.GetHost(), ns.Object("War03c:MayorScepter")) { + goto LABEL1 + } + ns.ObjectGroupOff(gvar22) + gvar93 = gvar91 + ns.SetShopkeeperText(obj24, "War03b:BarkeeperPost") + gvar88 = gvar87 + gvar97 = gvar96 + gvar73 = gvar72 + gvar76 = gvar75 + gvar79 = gvar78 + gvar82 = gvar81 + ns.CancelDialog(obj31) + ns.SetQuestStatus(1, "QuestComplete") + ns.LockDoor(obj47) + ns.LockDoor(obj48) +LABEL1: + return +} +func MayorGreet() { + ns.CreatureFollow(obj15, ns.GetHost()) + ns.ObjectGroupOff(gvar14) + MayorSpeaks() +} +func EnableWaitTrigGroup1() { + ns.ObjectGroupOn(gvar43) +} +func Wait1() { + if !ns.IsCaller(obj26) { + goto LABEL1 + } + ns.PauseObject(obj26, 500) + ns.ObjectGroupOff(gvar43) +LABEL1: + return +} +func EnableWaitTrigGroup2() { + ns.ObjectGroupOn(gvar44) +} +func Wait2() { + if !ns.IsCaller(obj27) { + goto LABEL1 + } + ns.PauseObject(obj27, 500) + ns.ObjectGroupOff(gvar44) +LABEL1: + return +} +func EnableWaitTrigGroup3() { + ns.ObjectGroupOn(gvar45) +} +func Wait3() { + if !ns.IsCaller(obj28) { + goto LABEL1 + } + ns.PauseObject(obj28, 500) + ns.ObjectGroupOff(gvar45) +LABEL1: + return +} +func MonsterGoHome() { + if !ns.HasClass(ns.GetCaller(), ns.MONSTER) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetCaller(), 0.16) + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func FieldGuidePickup() { + ns.Pickup(ns.GetHost(), obj34) + ns.Pickup(ns.GetHost(), obj35) +} +func CaptainGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp55) + v1 = ns.GetWaypointY(wp55) + v2 = ns.GetWaypointX(wp57) + v3 = ns.GetWaypointY(wp57) + ns.CreatureGuard(obj54, v0, v1, v2, v3, 500) +} +func PlaySubMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(18, 100) +LABEL1: + return +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func OpenMayorSecretWallGroup() { + ns.Move(obj98, wp100) + ns.WallGroupOpen(gvar99) +} +func Secret01XP() { + ns.AudioEvent(ns.SecretFound, wp101) + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func Secret02XP() { + ns.AudioEvent(ns.SecretFound, wp102) + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp60) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war03c/dummy_test.go b/examples/war03c/dummy_test.go new file mode 100644 index 0000000..3c50ac0 --- /dev/null +++ b/examples/war03c/dummy_test.go @@ -0,0 +1,6 @@ +package war03c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war03c/war03c.go b/examples/war03c/war03c.go new file mode 100644 index 0000000..26c42bf --- /dev/null +++ b/examples/war03c/war03c.go @@ -0,0 +1,460 @@ +package war03c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + gvar8 ns.ObjectGroupID + obj9 ns.ObjectID + gvar10 ns.WallGroupID + gvar11 ns.ObjectGroupID + wp12 ns.WaypointID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + wp16 ns.WaypointID + wp17 ns.WaypointID + wp18 ns.WaypointID + obj19 ns.ObjectID + gvar20 ns.ObjectGroupID + gvar21 ns.ObjectGroupID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + wp31 [6]ns.WaypointID + obj32 ns.ObjectID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + gvar40 int + gvar41 int + gvar42 int + gvar43 int + gvar44 int + gvar45 int + fvar46 float32 + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + gvar55 ns.ObjectGroupID + flag56 bool + flag57 bool + flag58 bool + flag59 bool + wp60 ns.WaypointID + wp61 ns.WaypointID + wp62 ns.WaypointID + wp63 ns.WaypointID + wp64 ns.WaypointID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID + wp69 ns.WaypointID +) + +func init() { + gvar40 = 0 + gvar41 = 1 + gvar42 = 2 + gvar43 = 3 + gvar44 = 4 + gvar45 = gvar40 + fvar46 = 50 + flag56 = false + flag57 = false + flag58 = false + flag59 = false +} +func PlayerDeath() { + ns.DeathScreen(3) +} +func KalenTalkStart() { + ns.TellStory(ns.SwordsmanHurt, "War03c:KalenSpeech") + ns.ObjectGroupOff(gvar20) +} +func KalenTalkEnd() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp16) + v1 = ns.GetWaypointY(wp16) + ns.AudioEvent(ns.NPCDie, wp16) + ns.AudioEvent(ns.MetalArmorDrop, wp17) + ns.AudioEvent(ns.LeatherArmorDrop, wp18) + ns.MoveObject(obj15, v0, v1) + ns.MoveObject(obj13, ns.GetWaypointX(wp17), ns.GetWaypointY(wp17)) + ns.MoveObject(obj14, ns.GetWaypointX(wp18), ns.GetWaypointY(wp18)) + ns.Damage(obj15, 0, 200, 12) + ns.ObjectGroupOn(gvar20) + ZombieAttack() + ns.Damage(obj19, 0, 200, 12) +} +func ZombieAttack() { + ns.WallGroupBreak(gvar10) + ns.GroupAggressionLevel(gvar11, 0.83) + ns.ObjectGroupOn(gvar21) + ns.MoveObject(obj22, 1848, 2581) + ns.MoveObject(obj23, 1848, 2581) + ns.MoveObject(obj24, 1904, 2710) + ns.MoveObject(obj25, 1904, 2710) + ns.MoveObject(obj26, 1988, 2624) + ns.MoveObject(obj27, 1988, 2624) + ns.MoveObject(obj28, 1976, 2534) + ns.MoveObject(obj29, 1793, 2708) +} +func UrchinGoHome() { + ns.GroupWander(gvar8) +} +func InitializeUrchinSetpiece() { + obj47 = ns.Object("Urchin01") + obj48 = ns.Object("Urchin02") + obj49 = ns.Object("Urchin03") + obj50 = ns.Object("Urchin04") + obj51 = ns.Object("ShamanDoor1") + obj52 = ns.Object("ShamanDoor2") + gvar55 = ns.ObjectGroup("OtherUrchins") + wp60 = ns.Waypoint("Urchin01SetpieceWP") + wp61 = ns.Waypoint("Urchin02SetpieceWP") + wp62 = ns.Waypoint("Urchin03SetpieceWP") + wp63 = ns.Waypoint("Urchin04SetpieceWP") + wp64 = ns.Waypoint("ShamanSetpieceWP") + wp65 = ns.Waypoint("UrchinSetpieceAudioOrigin") + wp66 = ns.Waypoint("ShamanExitWP") + wp67 = ns.Waypoint("ShamanFaceWP") + obj53 = ns.Object("ShamanBuddy1") + obj54 = ns.Object("ShamanBuddy2") + wp68 = ns.Waypoint("ShamanBuddy1WP") + wp69 = ns.Waypoint("ShamanBuddy2WP") +} +func PlaySubMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(18, 100) +LABEL1: + return +} +func MapInitialize() { + gvar8 = ns.ObjectGroup("UrchinEntryGroup") + obj4 = ns.Object("ChamberDoor1") + obj5 = ns.Object("ChamberDoor2") + obj6 = ns.Object("ChamberDoor3") + obj7 = ns.Object("ZombieJailDoor") + ns.LockDoor(obj7) + ns.LockDoor(obj4) + ns.LockDoor(obj5) + ns.LockDoor(obj6) + obj9 = ns.Object("MayorScepter") + obj13 = ns.Object("KalenArmor") + obj14 = ns.Object("KalenBoots") + wp17 = ns.Waypoint("KalenArmorWP") + wp18 = ns.Waypoint("KalenBootsWP") + obj15 = ns.Object("KalenDead") + ns.Damage(obj15, 0, 200, 12) + obj19 = ns.Object("Kalen") + gvar20 = ns.ObjectGroup("KalenMonsterGroup") + wp16 = ns.Waypoint("KalenWP") + ns.SetOwner(ns.GetHost(), obj19) + ns.StoryPic(obj19, "WoundedWarriorPic") + ns.SetDialog(obj19, ns.NORMAL, KalenTalkStart, KalenTalkEnd) + gvar10 = ns.WallGroup("ZombieWallGroup") + wp12 = ns.Waypoint("ZombieSound") + gvar11 = ns.ObjectGroup("ZombieAmbushGroup") + gvar21 = ns.ObjectGroup("MonsterGroup1") + obj22 = ns.Object("Monster1") + obj23 = ns.Object("Monster2") + obj24 = ns.Object("Monster3") + obj25 = ns.Object("Monster4") + obj26 = ns.Object("Monster5") + obj27 = ns.Object("Monster6") + obj26 = ns.Object("Monster7") + obj27 = ns.Object("Monster8") + obj30 = ns.Object("Shaman") + wp31[0] = ns.Waypoint("ShamanWP1") + wp31[1] = ns.Waypoint("ShamanWP2") + wp31[2] = ns.Waypoint("ShamanWP3") + wp31[3] = ns.Waypoint("ShamanWP4") + wp31[4] = ns.Waypoint("ShamanWP5") + wp31[5] = ns.Waypoint("ShamanWP6") + obj32 = ns.Object("ShamanElevator") + InitializeUrchinSetpiece() + wp33 = ns.Waypoint("Secret01WP") + wp34 = ns.Waypoint("Secret02WP") + wp35 = ns.Waypoint("Secret03WP") + wp36 = ns.Waypoint("Secret04WP") + wp37 = ns.Waypoint("Secret05WP") + wp38 = ns.Waypoint("Secret06WP") + wp39 = ns.Waypoint("QuestAudioWP") +} +func MapEntry() { + ns.UnBlind() +} +func ShamanMove() { + var ( + v0 int + v1 float32 + v2 float32 + ) + v0 = ns.Random(0, 5) + v1 = ns.GetWaypointX(wp31[v0]) + v2 = ns.GetWaypointY(wp31[v0]) + ns.MoveObject(obj30, v1, v2) + ns.LookAtObject(obj30, obj32) +} +func UnlockChamberDoors() { + ns.UnlockDoor(obj4) + ns.UnlockDoor(obj5) + ns.UnlockDoor(obj6) +} +func MonsterGoHomeLobo() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetCaller(), 0) + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MonsterGoHome() { + PlaySubMusic() + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MonsterHostile() { + PlaySubMusic() + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetCaller(), 0.83) +LABEL1: + return +} +func MonsterGoHomePassive() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MonsterGoHomeUrchin() { + if !(ns.HasClass(ns.GetCaller(), ns.MONSTER) == true && ns.HasSubclass(ns.GetCaller(), ns.SMALL_MONSTER) == true) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func HostilizeMe() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func AwardQuestXP() { + ns.AudioEvent(ns.SecretFound, wp39) + ns.GiveXp(ns.GetHost(), 100) +} +func Secret01XP() { + ns.AudioEvent(ns.SecretFound, wp33) + ns.GiveXp(ns.GetHost(), 25) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func Secret02XP() { + ns.AudioEvent(ns.SecretFound, wp34) + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func Secret03XP() { + ns.AudioEvent(ns.SecretFound, wp35) + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func Secret04XP() { + ns.AudioEvent(ns.SecretFound, wp36) + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func Secret05XP() { + ns.AudioEvent(ns.SecretFound, wp37) + ns.GiveXp(ns.GetHost(), 25) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func Secret06XP() { + ns.AudioEvent(ns.SecretFound, wp38) + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func FreezePlayer() { + ns.Frozen(ns.Object("War03b:Wolf1"), true) + ns.Frozen(ns.Object("War03b:Wolf2"), true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.WideScreen(true) + ns.FrameTimer(15, UrchinsEnter) +} +func UrchinsEnter() { + gvar45 = gvar41 + ns.Move(obj47, wp60) + ns.Move(obj48, wp61) + ns.Move(obj49, wp62) + ns.Move(obj50, wp63) +} +func CheckUrchins() { + if gvar45 == gvar41 { + goto LABEL1 + } + return +LABEL1: + if !(flag56 && flag57 && flag58 && flag59) { + goto LABEL2 + } + gvar45 = gvar42 + ns.FrameTimer(30, ShamanEnter) +LABEL2: + return +} +func ShamanEnter() { + ns.AudioEvent(ns.BigGong, wp65) + ns.Move(obj30, wp64) +} +func ShamanCommand() { + ns.AudioEvent(ns.UrchinShamanRecognize, wp65) + ns.WideScreen(false) + ns.Frozen(ns.Object("War03b:Wolf1"), false) + ns.Frozen(ns.Object("War03b:Wolf2"), false) + ns.Frozen(ns.GetHost(), false) + gvar45 = gvar44 + ns.FrameTimer(10, UrchinsAttack) + ns.FrameTimer(30, ShamanGuard) +} +func UrchinsAttack() { + ns.AggressionLevel(obj47, 0.83) + ns.Attack(obj47, ns.GetHost()) + ns.AggressionLevel(obj48, 0.83) + ns.Attack(obj48, ns.GetHost()) + ns.AggressionLevel(obj49, 0.83) + ns.Attack(obj49, ns.GetHost()) + ns.AggressionLevel(obj50, 0.83) + ns.Attack(obj50, ns.GetHost()) + ns.AggressionLevel(obj30, 0.5) + ns.ObjectGroupOn(gvar55) +} +func ShamanGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp66) + v1 = ns.GetWaypointY(wp66) + v2 = ns.GetWaypointX(wp67) + v3 = ns.GetWaypointY(wp67) + ns.CreatureGuard(obj30, v0, v1, v2, v3, 400) +} +func StartUrchinSetpiece() { + ns.ObjectOff(ns.GetTrigger()) + ns.FrameTimer(1, FreezePlayer) +} +func Urchin01Report() { + if gvar45 == gvar41 { + goto LABEL1 + } + return +LABEL1: + ns.AudioEvent(ns.UrchinRecognize, wp65) + flag56 = true + CheckUrchins() +} +func Urchin02Report() { + if gvar45 == gvar41 { + goto LABEL1 + } + return +LABEL1: + flag57 = true + ns.AudioEvent(ns.UrchinRecognize, wp65) + CheckUrchins() +} +func Urchin03Report() { + if gvar45 == gvar41 { + goto LABEL1 + } + return +LABEL1: + flag58 = true + ns.AudioEvent(ns.UrchinRecognize, wp65) + CheckUrchins() +} +func Urchin04Report() { + if gvar45 == gvar41 { + goto LABEL1 + } + return +LABEL1: + flag59 = true + ns.AudioEvent(ns.UrchinRecognize, wp65) + CheckUrchins() +} +func ShamanReport() { + if gvar45 == gvar42 { + goto LABEL1 + } + return +LABEL1: + gvar45 = gvar43 + ns.FrameTimer(20, ShamanCommand) + ns.LockDoor(obj51) + ns.LockDoor(obj52) +} +func ReleaseShamans() { + ns.AudioEvent(ns.BigGong, wp65) + ns.UnlockDoor(obj51) + ns.UnlockDoor(obj52) + ns.Move(obj53, wp68) + ns.Move(obj54, wp69) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war04a/dummy_test.go b/examples/war04a/dummy_test.go new file mode 100644 index 0000000..1a35fd1 --- /dev/null +++ b/examples/war04a/dummy_test.go @@ -0,0 +1,6 @@ +package war04a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war04a/war04a.go b/examples/war04a/war04a.go new file mode 100644 index 0000000..17c3106 --- /dev/null +++ b/examples/war04a/war04a.go @@ -0,0 +1,230 @@ +package war04a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + ivar4 int + ivar5 int + gvar6 int + fvar7 float32 + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + wp14 ns.WaypointID + wp15 ns.WaypointID + wp16 ns.WaypointID + wp17 ns.WaypointID + gvar18 int + gvar19 int + gvar20 int + gvar21 ns.ObjectGroupID + gvar22 ns.ObjectGroupID + obj23 ns.ObjectID + wp24 ns.WaypointID +) + +func init() { + ivar4 = 50 + ivar5 = 20 + gvar6 = 1 + fvar7 = 5 + gvar18 = 0 + gvar19 = 1 + gvar20 = gvar18 +} +func CloseBlockTrap01() { + ns.ObjectOff(obj12) + ns.Move(obj8, wp14) + ns.Move(obj9, wp15) + ns.FrameTimerWithArg(ivar5, 1, BlockTrapBoom) + ns.FrameTimerWithArg(ivar4, 1, ResetBlockTrap) +} +func CloseBlockTrap02() { + ns.ObjectOff(obj13) + ns.Move(obj10, wp16) + ns.Move(obj11, wp17) + ns.FrameTimerWithArg(ivar5, 2, BlockTrapBoom) + ns.FrameTimerWithArg(ivar4, 2, ResetBlockTrap) +} +func BlockTrapLoop() { + var v0 int + v0 = gvar6 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + CloseBlockTrap01() + gvar6 = 2 + goto LABEL3 +LABEL2: + CloseBlockTrap02() + gvar6 = 1 + goto LABEL3 +LABEL3: + ns.FrameTimer(30, BlockTrapLoop) +} +func InitializeBlockTrap() { + obj8 = ns.Object("SpikeBlock01") + obj9 = ns.Object("SpikeBlock02") + obj10 = ns.Object("SpikeBlock03") + obj11 = ns.Object("SpikeBlock04") + wp14 = ns.Waypoint("BlockWP01") + wp15 = ns.Waypoint("BlockWP02") + wp16 = ns.Waypoint("BlockWP03") + wp17 = ns.Waypoint("BlockWP04") + obj12 = ns.Object("BlockTrap01Trigger") + obj13 = ns.Object("BlockTrap02Trigger") + BlockTrapLoop() +} +func BlockTrapBoom(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.AudioEvent(ns.HammerMissing, wp14) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp14), ns.GetWaypointY(wp14), fvar7, 0) + goto LABEL3 +LABEL2: + ns.AudioEvent(ns.HammerMissing, wp16) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp16), ns.GetWaypointY(wp16), fvar7, 0) + goto LABEL3 +LABEL3: + return +} +func ResetBlockTrap(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.ObjectOn(obj12) + ns.AudioEvent(ns.TriggerReleased, wp14) + goto LABEL3 +LABEL2: + ns.ObjectOn(obj13) + ns.AudioEvent(ns.TriggerReleased, wp16) + goto LABEL3 +LABEL3: + return +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func CaptainDialogStart() { + var v0 int + v0 = gvar20 + if v0 == gvar18 { + goto LABEL1 + } + if v0 == gvar19 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con04a:CaptainGreet") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con04a:CaptainIdle") + goto LABEL3 +LABEL3: + return +} +func CaptainDialogEnd() { + var v0 int + v0 = gvar20 + if v0 == gvar18 { + goto LABEL1 + } + if v0 == gvar19 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.JournalEntry(ns.GetHost(), "Chapter4SearchCrypts", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + gvar20 = gvar19 + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func StartCaptainConversation() { + ns.SetDialog(obj23, ns.NORMAL, CaptainDialogStart, CaptainDialogEnd) + ns.StartDialog(obj23, ns.GetHost()) +} +func PlayOutdoorMusic() { + ns.Music(22, 100) +} +func MapInitialize() { + gvar21 = ns.ObjectGroup("Secret2Triggers") + gvar22 = ns.ObjectGroup("Fish") + obj23 = ns.Object("Airship_Captain") + wp24 = ns.Waypoint("SecretAudioOrigin") + ns.StoryPic(obj23, "AirshipCaptainPic") + ns.SetOwner(ns.GetHost(), obj23) + ns.GroupWander(gvar22) + InitializeBlockTrap() + PlayOutdoorMusic() + ns.StartupScreen(4) + ns.FrameTimer(5, StartCaptainConversation) +} +func OpenSecretPassageWalls() { + ns.WallOpen(ns.Wall(129, 137)) +} +func ExitMessage() { + ns.PrintToAll("War04a:ExitMessage") +} +func ClearScreen() { + ns.ImmediateBlind() +} +func PlayUndergroundMusic() { + ns.Music(20, 100) +} +func SecretSFX() { + ns.MoveWaypoint(wp24, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp24) +} +func FoundSecret1() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 25) + SecretSFX() +} +func FoundSecret2() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + ns.ObjectGroupOff(gvar21) + SecretSFX() +} +func FoundSecret3() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war04b/dummy_test.go b/examples/war04b/dummy_test.go new file mode 100644 index 0000000..7b87ada --- /dev/null +++ b/examples/war04b/dummy_test.go @@ -0,0 +1,6 @@ +package war04b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war04b/war04b.go b/examples/war04b/war04b.go new file mode 100644 index 0000000..04d562c --- /dev/null +++ b/examples/war04b/war04b.go @@ -0,0 +1,776 @@ +package war04b + +import ( + "strconv" + + "github.com/noxworld-dev/noxscript/ns/v3" +) + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + flag19 bool + flag20 bool + flag21 bool + flag22 bool + flag23 bool + ivar24 int + ivar25 int + gvar26 int + gvar27 int + gvar28 int + obj29 [13]ns.ObjectID + obj30 [13]ns.ObjectID + ivar31 int + obj32 [56]ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + gvar49 ns.ObjectGroupID + gvar50 ns.WallGroupID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 [56]ns.WaypointID + wp57 ns.WaypointID + gvar58 ns.WaypointGroupID + gvar59 ns.WaypointGroupID + gvar60 ns.WaypointGroupID +) + +func init() { + gvar7 = 0 + gvar8 = 1 + gvar9 = 2 + gvar10 = 3 + gvar11 = 0 + gvar12 = 1 + gvar13 = 2 + gvar14 = 3 + gvar15 = 4 + gvar16 = 5 + gvar17 = 6 + gvar18 = 7 + flag19 = false + flag20 = true + flag21 = false + flag22 = false + flag23 = false + ivar24 = 0 + ivar25 = 0 + gvar26 = gvar12 + gvar27 = 0 + gvar28 = gvar7 + ivar31 = 120 +} +func InitializeSniperRoom() { + obj4 = ns.Object("ExitGate") + obj5 = ns.Object("SkeliGate01") + obj6 = ns.Object("SkeliGate02") + ns.LockDoor(obj4) + ns.LockDoor(obj5) + ns.LockDoor(obj6) +} +func UnlockExitGate() { + ns.UnlockDoor(obj4) + ns.UnlockDoor(obj5) + ns.UnlockDoor(obj6) +} +func setUpFlameLever() { + if !flag19 { + goto LABEL1 + } + return +LABEL1: + flag19 = true + gvar26 = gvar12 + ivar25 = 2 + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL2 + } + obj32[ivar24] = 0 + ivar24 += 1 + } +LABEL2: + flameLever() +} +func flameLever() { + var v0 int + if !flag19 { + goto LABEL1 + } + v0 = gvar26 + if v0 == gvar12 { + goto LABEL2 + } + if v0 == gvar13 { + goto LABEL3 + } + if v0 == gvar14 { + goto LABEL4 + } + if v0 == gvar15 { + goto LABEL5 + } + if v0 == gvar16 { + goto LABEL6 + } + if v0 == gvar17 { + goto LABEL7 + } + if v0 == gvar18 { + goto LABEL8 + } + if v0 == gvar11 { + goto LABEL9 + } + goto LABEL10 +LABEL2: + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL11 + } + ns.Delete(obj32[ivar24]) + obj32[ivar24] = ns.CreateObject("SmallFlame", wp56[ivar24]) + ivar24 += 1 + } +LABEL11: + gvar26 = gvar13 + ns.AudioEvent(ns.FireballCast, wp54) + ns.AudioEvent(ns.FireballCast, wp55) + ivar25 = 2 + goto LABEL10 +LABEL3: + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL13 + } + ns.Delete(obj32[ivar24]) + obj32[ivar24] = ns.CreateObject("MediumFlame", wp56[ivar24]) + ivar24 += 1 + } +LABEL13: + gvar26 = gvar14 + ns.AudioEvent(ns.DemonBreath, wp54) + ns.AudioEvent(ns.DemonBreath, wp55) + ivar25 = 2 + goto LABEL10 +LABEL4: + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL15 + } + ns.Delete(obj32[ivar24]) + obj32[ivar24] = ns.CreateObject("Flame", wp56[ivar24]) + ivar24 += 1 + } +LABEL15: + gvar26 = gvar15 + ivar25 = 2 + goto LABEL10 +LABEL5: + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL17 + } + ns.Delete(obj32[ivar24]) + obj32[ivar24] = ns.CreateObject("LargeFlame", wp56[ivar24]) + ivar24 += 1 + } +LABEL17: + gvar26 = gvar16 + ivar25 = 150 + goto LABEL10 +LABEL6: + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL19 + } + ns.Delete(obj32[ivar24]) + obj32[ivar24] = ns.CreateObject("Flame", wp56[ivar24]) + ivar24 += 1 + } +LABEL19: + gvar26 = gvar17 + ivar25 = 2 + goto LABEL10 +LABEL7: + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL21 + } + ns.Delete(obj32[ivar24]) + obj32[ivar24] = ns.CreateObject("MediumFlame", wp56[ivar24]) + ivar24 += 1 + } +LABEL21: + gvar26 = gvar18 + ns.AudioEvent(ns.FireExtinguish, wp54) + ns.AudioEvent(ns.FireExtinguish, wp55) + ivar25 = 2 + goto LABEL10 +LABEL8: + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL23 + } + ns.Delete(obj32[ivar24]) + obj32[ivar24] = ns.CreateObject("SmallFlame", wp56[ivar24]) + ivar24 += 1 + } +LABEL23: + gvar26 = gvar11 + ivar25 = 2 + goto LABEL10 +LABEL9: + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL25 + } + ns.Delete(obj32[ivar24]) + obj32[ivar24] = 0 + ivar24 += 1 + } +LABEL25: + gvar26 = gvar12 + flag19 = false + goto LABEL10 +LABEL10: + ns.FrameTimer(ivar25, flameLever) +LABEL1: + return +} +func skullHallOn() { + if !flag20 { + goto LABEL1 + } + ns.CastSpellLocationLocation(ns.SPELL_FIREBALL, 3012, 2229, 3185, 2403) + ns.CastSpellLocationLocation(ns.SPELL_FIREBALL, 2896, 2346, 3070, 2517) + ns.FrameTimer(60, skullHallOn) +LABEL1: + return +} +func Zombie1Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj41) + v1 = ns.GetObjectY(obj41) + ns.RaiseZombie(obj41) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj33, obj41) +} +func Zombie2Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj42) + v1 = ns.GetObjectY(obj42) + ns.RaiseZombie(obj42) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj33, obj42) +} +func Zombie3Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj43) + v1 = ns.GetObjectY(obj43) + ns.RaiseZombie(obj43) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj33, obj43) +} +func ZombieAttackHecubah() { + ns.WayPointGroupOn(gvar59) + ns.WayPointGroupOff(gvar58) + ns.HitLocation(obj41, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) + ns.HitLocation(obj42, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) + ns.HitLocation(obj43, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) +} +func HecubahEncounterSEG4() { + ns.SetDialog(obj33, ns.NORMAL, HecubahDialogStart, HecubahDialogEnd) + gvar28 = gvar10 + ns.StartDialog(obj33, ns.GetHost()) +} +func HecubahEncounterSEG3() { + ns.SetDialog(obj34, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + gvar28 = gvar9 + ns.StartDialog(obj34, ns.GetHost()) +} +func hecGone() { + if !ns.IsCaller(obj33) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj33, ns.GetWaypointX(wp53), ns.GetWaypointY(wp53)) + ns.ObjectOff(obj33) +LABEL1: + return +} +func ReleasePlayer() { + if !ns.IsCaller(obj33) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar50) + ns.NoWallSound(false) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(ns.Object("War03b:Wolf1"), false) + ns.Frozen(ns.Object("War03b:Wolf2"), false) + ns.SetDialog(obj34, ns.NORMAL, necroTalkStart, necroTalkEnd) + gvar27 = 5 + ns.StartDialog(obj34, ns.GetHost()) +LABEL1: + return +} +func necroDies() { + ns.UnlockDoor(obj39) + ns.UnlockDoor(obj40) + ns.CancelDialog(obj34) + ns.SetDialog(obj34, ns.NORMAL, necroTalkStart, necroTalkEnd) + gvar27 = 4 + ns.StartDialog(obj34, ns.GetHost()) +} +func necroTalkStart() { + var v0 int + v0 = gvar27 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroTaunts") + ns.Frozen(obj34, true) + ns.Frozen(obj41, true) + ns.Frozen(obj43, true) + goto LABEL6 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroGloats") + ns.Frozen(obj34, true) + ns.Frozen(obj41, true) + ns.Frozen(obj43, true) + goto LABEL6 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroThreatens2") + ns.Frozen(obj34, true) + ns.Frozen(obj41, true) + ns.Frozen(obj43, true) + goto LABEL6 +LABEL4: + ns.WayPointGroupOff(gvar59) + ns.WayPointGroupOn(gvar60) + ns.LookAtObject(obj34, ns.GetHost()) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroDies") + ns.Frozen(obj34, true) + ns.Frozen(obj41, true) + ns.Frozen(obj43, true) + goto LABEL6 +LABEL5: + ns.AggressionLevel(obj34, 0.83) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroThreatens") + ns.LookAtObject(obj34, ns.GetHost()) + ns.Frozen(obj34, true) + ns.Frozen(obj41, true) + ns.Frozen(obj43, true) + goto LABEL6 +LABEL6: + return +} +func necroTalkEnd() { + ns.CancelDialog(obj34) + ns.Frozen(obj34, false) + ns.Frozen(obj41, false) + ns.Frozen(obj43, false) + if gvar27 != 4 { + goto LABEL1 + } + ns.JournalEdit(ns.GetHost(), "Chapter4SearchCrypts", 4) + ns.JournalEntry(ns.GetHost(), "Chapter4Escape", 2) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL1: + return +} +func HecubahShootZombie1() { + ns.LookAtObject(obj33, obj41) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj33, obj41) + ns.FrameTimer(30, HecubahShootZombie2) +} +func HecubahShootZombie2() { + ns.LookAtObject(obj33, obj42) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj33, obj42) + ns.FrameTimer(30, HecubahShootZombie3) +} +func HecubahShootZombie3() { + ns.LookAtObject(obj33, obj43) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj33, obj43) + ns.FrameTimer(30, HecubahEncounterSEG3) +} +func ZombieInjured() { + ns.Damage(ns.GetTrigger(), 0, 100, 1) +} +func InitializeFistTraps() { + obj30[0] = ns.Object("FistTrap01") + obj30[1] = ns.Object("FistTrap02") + obj30[2] = ns.Object("FistTrap03") + obj30[3] = ns.Object("FistTrap04") + obj30[4] = ns.Object("FistTrap05") + obj30[5] = ns.Object("FistTrap06") + obj30[6] = ns.Object("FistTrap07") + obj30[7] = ns.Object("FistTrap08") + obj30[8] = ns.Object("FistTrap09") + obj30[9] = ns.Object("FistTrap10") + obj30[10] = ns.Object("FistTrap11") + obj30[11] = ns.Object("FistTrap12") + obj30[12] = ns.Object("FistTrap13") + obj29[0] = ns.Object("FistTrapLight01") + obj29[1] = ns.Object("FistTrapLight02") + obj29[2] = ns.Object("FistTrapLight03") + obj29[3] = ns.Object("FistTrapLight04") + obj29[4] = ns.Object("FistTrapLight05") + obj29[5] = ns.Object("FistTrapLight06") + obj29[6] = ns.Object("FistTrapLight07") + obj29[7] = ns.Object("FistTrapLight08") + obj29[8] = ns.Object("FistTrapLight09") + obj29[9] = ns.Object("FistTrapLight10") + obj29[10] = ns.Object("FistTrapLight11") + obj29[11] = ns.Object("FistTrapLight12") + obj29[12] = ns.Object("FistTrapLight13") +} +func MapInitialize() { + ivar24 = 0 + for { + if !(ivar24 < 56) { + goto LABEL1 + } + wp56[ivar24] = ns.Waypoint("FlameWay" + strconv.Itoa(ivar24+1)) + ivar24 += 1 + } +LABEL1: + obj33 = ns.Object("Hecubah") + obj34 = ns.Object("Necromancer") + obj35 = ns.Object("EntranceGate1") + obj36 = ns.Object("EntranceGate2") + obj37 = ns.Object("EntranceGate3") + obj38 = ns.Object("EntranceGate4") + obj39 = ns.Object("PitGate1") + obj40 = ns.Object("PitGate2") + obj41 = ns.Object("DeadZombie1") + obj42 = ns.Object("DeadZombie2") + obj43 = ns.Object("DeadZombie3") + obj44 = ns.Object("Zombie01") + obj45 = ns.Object("Zombie02") + obj46 = ns.Object("Zombie03") + obj47 = ns.Object("FlameLever1") + obj48 = ns.Object("FlameLever2") + gvar49 = ns.ObjectGroup("Zombies") + gvar50 = ns.WallGroup("InvisibleBlockWall") + wp52 = ns.Waypoint("SecretAudioOrigin") + wp54 = ns.Waypoint("FlameSound1") + wp55 = ns.Waypoint("FlameSound2") + wp51 = ns.Waypoint("AudioOrigin") + wp57 = ns.Waypoint("WP") + wp53 = ns.Waypoint("HecubahStorage") + gvar58 = ns.WaypointGroup("BeforeSetpieceWay") + gvar59 = ns.WaypointGroup("SetpieceWay") + gvar60 = ns.WaypointGroup("AfterSetpieceWay") + ns.WayPointGroupOff(gvar59) + ns.WayPointGroupOff(gvar60) + ns.Damage(obj41, 0, 100, 0) + ns.Damage(obj42, 0, 100, 0) + ns.Damage(obj43, 0, 100, 0) + ns.ZombieStayDown(obj41) + ns.ZombieStayDown(obj42) + ns.ZombieStayDown(obj43) + ns.StoryPic(obj34, "NecromancerPic") + InitializeFistTraps() + InitializeSniperRoom() +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func ToggleSkullHall() { + if !flag20 { + goto LABEL1 + } + flag20 = false + goto LABEL2 +LABEL1: + flag20 = true + skullHallOn() +LABEL2: + return +} +func HecubahDialogStart() { + var v0 int + v0 = gvar28 + if v0 == gvar7 { + goto LABEL1 + } + if v0 == gvar8 { + goto LABEL2 + } + if v0 == gvar9 { + goto LABEL3 + } + if v0 == gvar10 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.GhostRecognize, "War04a:Hecubah") + goto LABEL5 +LABEL2: + ns.TellStory(ns.GhostRecognize, "War04a:HecubahSEG2") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj34, ns.GetHost()) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroWarnsHec") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj33, ns.GetHost()) + ns.TellStory(ns.GhostRecognize, "War04a:HecubahSEG3") + goto LABEL5 +LABEL5: + return +} +func HecubahDialogEnd() { + var ( + v0 float32 + v1 float32 + v4 ns.WaypointID + v5 int + ) + _ = v1 + _ = v0 + v5 = gvar28 + if v5 == gvar7 { + goto LABEL1 + } + if v5 == gvar8 { + goto LABEL2 + } + if v5 == gvar9 { + goto LABEL3 + } + if v5 == gvar10 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.FrameTimer(20, Zombie2Rise) + ns.FrameTimer(45, Zombie1Rise) + ns.FrameTimer(60, Zombie3Rise) + ns.FrameTimer(60, ZombieAttackHecubah) + gvar28 = gvar8 + ns.CancelDialog(obj33) + goto LABEL5 +LABEL2: + ns.LookAtObject(obj33, obj42) + gvar28 = gvar9 + ns.CancelDialog(obj33) + ns.AggressionLevel(obj41, 0) + ns.AggressionLevel(obj42, 0) + ns.AggressionLevel(obj43, 0) + ns.PushObject(obj41, 40, ns.GetObjectX(obj33), ns.GetObjectY(obj33)) + ns.PushObject(obj42, 40, ns.GetObjectX(obj33), ns.GetObjectY(obj33)) + ns.PushObject(obj43, 40, ns.GetObjectX(obj33), ns.GetObjectY(obj33)) + ns.SetOwner(obj39, obj41) + ns.SetOwner(obj39, obj42) + ns.SetOwner(obj39, obj43) + ns.SetCallback(obj41, 7, ZombieInjured) + ns.SetCallback(obj42, 7, ZombieInjured) + ns.SetCallback(obj43, 7, ZombieInjured) + ns.FrameTimer(20, HecubahShootZombie1) + goto LABEL5 +LABEL3: + gvar28 = gvar10 + ns.CancelDialog(obj34) + ns.FrameTimer(5, HecubahEncounterSEG4) + goto LABEL5 +LABEL4: + v4 = ns.Waypoint("WP") + v0 = ns.GetObjectX(obj33) + v1 = ns.GetObjectY(obj33) + ns.CreatureIdle(obj34) + ns.UnlockDoor(obj35) + ns.UnlockDoor(obj36) + ns.LockDoor(obj37) + ns.LockDoor(obj38) + ns.ObjectOn(obj33) + ns.Move(obj33, v4) + flag22 = true + ns.CancelDialog(obj33) + goto LABEL5 +LABEL5: + return +} +func AttackSuccessful() { + ns.SetDialog(obj33, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj33, ns.GetHost()) +} +func HecubahEncounterSEG2() { + ns.StoryPic(obj33, "HecubahPic") + ns.SetDialog(obj33, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj33, ns.GetHost()) +} +func HecubahEncounterSEG1() { + if !(!flag21 && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + flag21 = true + ns.Frozen(ns.GetHost(), true) + ns.Frozen(ns.Object("War03b:Wolf1"), true) + ns.Frozen(ns.Object("War03b:Wolf2"), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahEncounterSEG2) +LABEL1: + return +} +func ResetFistTrap(a1 int) { + ns.ObjectOn(obj29[a1]) + ns.ObjectOn(obj30[a1]) + ns.MoveWaypoint(wp51, ns.GetObjectX(obj30[a1]), ns.GetObjectY(obj30[a1])) + ns.AudioEvent(ns.TriggerReleased, wp51) +} +func DropFist(a1 int) { + ns.CastSpellObjectLocation(ns.SPELL_FIST, obj30[a1], ns.GetObjectX(obj30[a1]), ns.GetObjectY(obj30[a1])) + ns.ObjectOff(obj30[a1]) + ns.ObjectOff(obj29[a1]) + ns.FrameTimerWithArg(ivar31, a1, ResetFistTrap) +} +func ActivateFistTrap01() { + DropFist(0) +} +func ActivateFistTrap02() { + DropFist(1) +} +func ActivateFistTrap03() { + DropFist(2) +} +func ActivateFistTrap04() { + DropFist(3) +} +func ActivateFistTrap05() { + DropFist(4) +} +func ActivateFistTrap06() { + DropFist(5) +} +func ActivateFistTrap07() { + DropFist(6) +} +func ActivateFistTrap08() { + DropFist(7) +} +func ActivateFistTrap09() { + DropFist(8) +} +func ActivateFistTrap10() { + DropFist(9) +} +func ActivateFistTrap11() { + DropFist(10) +} +func ActivateFistTrap12() { + DropFist(11) +} +func ActivateFistTrap13() { + DropFist(12) +} +func NoEnemys() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp52) +} +func FoundSecret01() { + ns.ObjectOff(ns.GetTrigger()) + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + SecretSFX() +} +func FoundSecret02() { + ns.ObjectOff(ns.GetTrigger()) + ns.GiveXp(ns.GetHost(), 75) + ns.PrintToAll("GeneralPrint:SecretFound") + SecretSFX() +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war04c/dummy_test.go b/examples/war04c/dummy_test.go new file mode 100644 index 0000000..1995052 --- /dev/null +++ b/examples/war04c/dummy_test.go @@ -0,0 +1,6 @@ +package war04c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war04c/war04c.go b/examples/war04c/war04c.go new file mode 100644 index 0000000..13ce779 --- /dev/null +++ b/examples/war04c/war04c.go @@ -0,0 +1,923 @@ +package war04c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.WallGroupID + obj5 ns.ObjectID + obj6 ns.ObjectID + ivar7 int + ivar8 int + fvar9 float32 + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + gvar42 ns.ObjectGroupID + gvar43 ns.ObjectGroupID + gvar44 ns.ObjectGroupID + obj45 [13]ns.ObjectID + obj46 [13]ns.ObjectID + ivar47 int + wp48 ns.WaypointID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + wp55 ns.WaypointID + wp56 ns.WaypointID + gvar57 ns.WallGroupID + gvar58 ns.WallGroupID + flag59 bool + flag60 bool + gvar61 int + gvar62 int + gvar63 int + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + wp70 [4]ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + flag73 bool + flag74 bool + ivar75 int + wp76 ns.WaypointID + gvar77 ns.ObjectGroupID + ivar78 int + ivar79 int + ivar80 int + ivar81 int + ivar82 int + ivar83 int + ivar84 int + ivar85 int + ivar86 int + ivar87 int + ivar88 int + gvar89 int + gvar90 int + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID +) + +func init() { + ivar7 = 50 + ivar8 = 20 + fvar9 = 5 + ivar47 = 120 + flag59 = false + flag60 = false + gvar61 = 0 + gvar62 = 1 + gvar63 = gvar62 + flag73 = false + flag74 = false + ivar75 = 0 + ivar78 = 0 + ivar79 = 0 + ivar80 = 0 + ivar81 = 0 + ivar82 = 0 + ivar83 = 0 + ivar84 = 0 + ivar85 = 0 + ivar86 = 0 + ivar87 = 0 + ivar88 = 0 + gvar89 = 0 + gvar90 = 0 +} +func InitializeSkeletonAmbush() { + gvar4 = ns.WallGroup("SkeletonAmbushWalls") +} +func SkeletonAmbush() { + ns.WallGroupBreak(gvar4) +} +func SkeletonAmbushTimer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.FrameTimer(45, SkeletonAmbush) +LABEL1: + return +} +func EnablePitTrapElevator01() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(ns.Object("PitTrapElevator01")) +} +func EnablePitTrapElevator02() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(ns.Object("PitTrapElevator02")) +} +func OpenPitElevatorWalls01() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(ns.WallGroup("PitTrapElevatorWalls01")) +} +func OpenPitElevatorWalls02() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(ns.WallGroup("PitTrapElevatorWalls02")) +} +func ZombieAmbush() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupBreak(ns.WallGroup("ZombieAmbushWalls")) +} +func InitializeHallwayArrowTraps() { + obj5 = ns.Object("HallwayArrowTrap01") + obj6 = ns.Object("HallwayArrowTrap02") +} +func ResetHallwayArrowTrap01() { + ns.ObjectOff(obj5) +} +func ResetHallwayArrowTrap02() { + ns.ObjectOff(obj6) +} +func ActivateHallwayArrowTrap01() { + ns.ObjectOn(obj5) + ns.FrameTimer(1, ResetHallwayArrowTrap01) +} +func ActivateHallwayArrowTrap02() { + ns.ObjectOn(obj6) + ns.FrameTimer(1, ResetHallwayArrowTrap02) +} +func InitializeBlockTrap() { + obj10 = ns.Object("SpikeBlock01") + obj11 = ns.Object("SpikeBlock02") + obj12 = ns.Object("SpikeBlock03") + obj13 = ns.Object("SpikeBlock04") + obj14 = ns.Object("SpikeBlock05") + obj15 = ns.Object("SpikeBlock06") + obj16 = ns.Object("SpikeBlock07") + obj17 = ns.Object("SpikeBlock08") + obj18 = ns.Object("SpikeBlock09") + obj19 = ns.Object("SpikeBlock10") + obj20 = ns.Object("SpikeBlock11") + obj21 = ns.Object("SpikeBlock12") + obj22 = ns.Object("SpikeBlock13") + obj23 = ns.Object("SpikeBlock14") + obj24 = ns.Object("SpikeBlock15") + obj25 = ns.Object("SpikeBlock16") + wp26 = ns.Waypoint("BlockWP01") + wp27 = ns.Waypoint("BlockWP02") + wp28 = ns.Waypoint("BlockWP03") + wp29 = ns.Waypoint("BlockWP04") + wp30 = ns.Waypoint("BlockWP05") + wp31 = ns.Waypoint("BlockWP06") + wp32 = ns.Waypoint("BlockWP07") + wp33 = ns.Waypoint("BlockWP08") + wp34 = ns.Waypoint("BlockWP09") + wp35 = ns.Waypoint("BlockWP10") + wp36 = ns.Waypoint("BlockWP11") + wp37 = ns.Waypoint("BlockWP12") + wp38 = ns.Waypoint("BlockWP13") + wp39 = ns.Waypoint("BlockWP14") + wp40 = ns.Waypoint("BlockWP15") + wp41 = ns.Waypoint("BlockWP16") + gvar42 = ns.ObjectGroup("BlockTrap01Triggers") + gvar43 = ns.ObjectGroup("BlockTrap02Triggers") + gvar44 = ns.ObjectGroup("BlockTrap03Triggers") +} +func BlockTrapBoom(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.AudioEvent(ns.HammerMissing, wp28) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp28), ns.GetWaypointY(wp28), fvar9, 0) + goto LABEL4 +LABEL2: + ns.AudioEvent(ns.HammerMissing, wp34) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp34), ns.GetWaypointY(wp34), fvar9, 0) + goto LABEL4 +LABEL3: + ns.AudioEvent(ns.HammerMissing, wp38) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp38), ns.GetWaypointY(wp38), fvar9, 0) + goto LABEL4 +LABEL4: + return +} +func ResetBlockTrap(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.ObjectGroupOn(gvar42) + ns.AudioEvent(ns.TriggerReleased, wp28) + goto LABEL4 +LABEL2: + ns.ObjectGroupOn(gvar43) + ns.AudioEvent(ns.TriggerReleased, wp34) + goto LABEL4 +LABEL3: + ns.ObjectGroupOn(gvar44) + ns.AudioEvent(ns.TriggerReleased, wp38) + goto LABEL4 +LABEL4: + return +} +func CloseBlockTrap01() { + ns.ObjectGroupOff(gvar42) + ns.Move(obj10, wp26) + ns.Move(obj11, wp27) + ns.Move(obj12, wp28) + ns.Move(obj13, wp29) + ns.Move(obj14, wp30) + ns.Move(obj15, wp31) + ns.FrameTimerWithArg(ivar8, 1, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 1, ResetBlockTrap) +} +func CloseBlockTrap02() { + ns.ObjectGroupOff(gvar43) + ns.Move(obj16, wp32) + ns.Move(obj17, wp33) + ns.Move(obj18, wp34) + ns.Move(obj19, wp35) + ns.Move(obj20, wp36) + ns.Move(obj21, wp37) + ns.FrameTimerWithArg(ivar8, 2, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 2, ResetBlockTrap) +} +func CloseBlockTrap03() { + ns.ObjectGroupOff(gvar44) + ns.Move(obj22, wp38) + ns.Move(obj23, wp39) + ns.Move(obj24, wp40) + ns.Move(obj25, wp41) + ns.FrameTimerWithArg(ivar8, 3, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 3, ResetBlockTrap) +} +func InitializeFistTraps() { + obj46[0] = ns.Object("FistTrap01") + obj46[1] = ns.Object("FistTrap02") + obj46[2] = ns.Object("FistTrap03") + obj46[3] = ns.Object("FistTrap04") + obj46[4] = ns.Object("FistTrap05") + obj46[5] = ns.Object("FistTrap06") + obj46[6] = ns.Object("FistTrap07") + obj46[7] = ns.Object("FistTrap08") + obj46[8] = ns.Object("FistTrap09") + obj46[9] = ns.Object("FistTrap10") + obj46[10] = ns.Object("FistTrap11") + obj46[11] = ns.Object("FistTrap12") + obj46[12] = ns.Object("FistTrap13") + obj45[0] = ns.Object("FistTrapLight01") + obj45[1] = ns.Object("FistTrapLight02") + obj45[2] = ns.Object("FistTrapLight03") + obj45[3] = ns.Object("FistTrapLight04") + obj45[4] = ns.Object("FistTrapLight05") + obj45[5] = ns.Object("FistTrapLight06") + obj45[6] = ns.Object("FistTrapLight07") + obj45[7] = ns.Object("FistTrapLight08") + obj45[8] = ns.Object("FistTrapLight09") + obj45[9] = ns.Object("FistTrapLight10") + obj45[10] = ns.Object("FistTrapLight11") + obj45[11] = ns.Object("FistTrapLight12") + obj45[12] = ns.Object("FistTrapLight13") +} +func ResetFistTrap(a1 int) { + ns.ObjectOn(obj45[a1]) + ns.ObjectOn(obj46[a1]) + ns.MoveWaypoint(wp48, ns.GetObjectX(obj46[a1]), ns.GetObjectY(obj46[a1])) + ns.AudioEvent(ns.TriggerReleased, wp48) +} +func DropFist(a1 int) { + ns.CastSpellObjectLocation(ns.SPELL_FIST, obj46[a1], ns.GetObjectX(obj46[a1]), ns.GetObjectY(obj46[a1])) + ns.ObjectOff(obj46[a1]) + ns.ObjectOff(obj45[a1]) + ns.FrameTimerWithArg(ivar47, a1, ResetFistTrap) +} +func ActivateFistTrap01() { + DropFist(0) +} +func ActivateFistTrap02() { + DropFist(1) +} +func ActivateFistTrap03() { + DropFist(2) +} +func ActivateFistTrap04() { + DropFist(3) +} +func ActivateFistTrap05() { + DropFist(4) +} +func ActivateFistTrap06() { + DropFist(5) +} +func ActivateFistTrap07() { + DropFist(6) +} +func ActivateFistTrap08() { + DropFist(7) +} +func ActivateFistTrap09() { + DropFist(8) +} +func ActivateFistTrap10() { + DropFist(9) +} +func ActivateFistTrap11() { + DropFist(10) +} +func ActivateFistTrap12() { + DropFist(11) +} +func ActivateFistTrap13() { + DropFist(12) +} +func EnableGuardian() { + ns.WideScreen(false) + ns.AudioEvent(ns.SwordsmanRecognize, wp48) + ns.Frozen(ns.GetHost(), false) + ns.AggressionLevel(obj53, 0.83) + ns.NoWallSound(false) +} +func GuardianEnterFX() { + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.WallDestroyedStone, wp48) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) +} +func GuardianMoveToArena() { + ns.Move(obj53, wp55) +} +func InitializeGuardian() { + obj53 = ns.Object("Guardian") + obj49 = ns.Object("RightGuardianGate") + obj50 = ns.Object("LeftGuardianGate") + obj51 = ns.Object("RightGuardianDoor") + obj52 = ns.Object("LeftGuardianDoor") + obj54 = ns.Object("GuardianDoorTrigger") + wp55 = ns.Waypoint("GuardianArena") + wp56 = ns.Waypoint("GuardianDoorWP") + gvar57 = ns.WallGroup("GuardianWalls") + gvar58 = ns.WallGroup("GuardianDestructableWalls") + ns.LockDoor(obj49) + ns.LockDoor(obj50) +} +func GuardianEnter() { + if !(!flag59 && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + ns.MusicPushEvent() + ns.Music(26, 100) + ns.LockDoor(obj51) + ns.LockDoor(obj52) + ns.ObjectOn(obj54) + flag59 = true + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(60, GuardianMoveToArena) + ns.FrameTimer(30, GuardianEnterFX) +LABEL1: + return +} +func BreakGuardianWalls() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.AudioEvent(ns.WallDestroyedStone, wp48) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) + ns.WallGroupOpen(gvar57) + ns.WallGroupBreak(gvar58) +} +func GuardianArrivesInArena() { + if !ns.IsCaller(obj53) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LookAtObject(obj53, ns.GetHost()) + ns.ObjectOff(obj54) + ns.FrameTimer(30, EnableGuardian) +LABEL1: + return +} +func GuardianDie() { + if flag60 { + goto LABEL1 + } + flag60 = true + ns.UnlockDoor(obj50) + ns.UnlockDoor(obj49) + ns.UnlockDoor(obj52) + ns.UnlockDoor(obj51) + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagDrop, wp48) + ns.PrintToAll("War04d:WarriorDie") + ns.GiveXp(ns.GetHost(), 700) + ns.MusicPopEvent() +LABEL1: + return +} +func ClearGuardianDoor() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MoveObject(ns.GetCaller(), ns.GetWaypointX(wp56), ns.GetWaypointY(wp56)) +LABEL1: + return +} +func EnableKeeper() { + ns.LookAtObject(obj64, ns.GetHost()) + ns.AggressionLevel(obj64, 0.83) +} +func InitializeKeeper() { + obj64 = ns.Object("Keeper") + obj65 = ns.Object("LeftKeeperEntranceDoor") + obj66 = ns.Object("RightKeeperEntranceDoor") + obj67 = ns.Object("LeftKeeperExitDoor") + obj68 = ns.Object("RightKeeperExitDoor") + obj69 = ns.Object("KeeperDoorTrigger") + wp70[0] = ns.Waypoint("BlinkWP1") + wp70[1] = ns.Waypoint("BlinkWP2") + wp70[2] = ns.Waypoint("BlinkWP3") + wp70[3] = ns.Waypoint("BlinkWP4") + wp71 = ns.Waypoint("KeeperEnterWP") + wp72 = ns.Waypoint("KeeperDoorWP") + ns.LockDoor(obj67) + ns.LockDoor(obj68) +} +func EnemyGoHome() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !(r1 && ns.GetCaller() != obj64) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func GoInvisible() { + var ( + v0 int + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 [4]float32 + v6 float32 + v7 int + ) + v6 = 0 + v7 = 0 + ivar75 += 1 + if gvar63 != gvar62 { + goto LABEL1 + } + gvar63 = gvar61 + return + goto LABEL2 +LABEL1: + gvar63 = gvar62 +LABEL2: + v3 = ns.GetObjectX(obj64) + v4 = ns.GetObjectY(obj64) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL3 + } + v5[v0] = ns.Distance(v3, v4, ns.GetWaypointX(wp70[v0]), ns.GetWaypointY(wp70[v0])) + v0 += 1 + } +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL5 + } + if !(v5[v0] > v6) { + goto LABEL6 + } + v6 = v5[v0] + v7 = v0 + LABEL6: + v0 += 1 + } +LABEL5: + if !(ns.CurrentHealth(obj64) > 0) { + goto LABEL8 + } + v1 = ns.GetWaypointX(wp70[v7]) + v2 = ns.GetWaypointY(wp70[v7]) + if !(ivar75 >= 4) { + goto LABEL9 + } + ivar75 = 0 + ns.Enchant(obj64, ns.ENCHANT_INVISIBLE, 3) +LABEL9: + ns.Effect(ns.TELEPORT, v3, v4, 0, 0) + ns.MoveWaypoint(wp48, v3, v4) + ns.AudioEvent(ns.BlinkCast, wp48) + ns.Effect(ns.SMOKE_BLAST, v1, v2, 0, 0) + ns.MoveObject(obj64, v1, v2) +LABEL8: + return +} +func DisableKeeperDoorTrigger() { + ns.ObjectOff(obj69) +} +func KeeperEnter() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp71) + v1 = ns.GetWaypointY(wp71) + if !(ns.IsCaller(ns.GetHost()) && flag74 == false) { + goto LABEL1 + } + ns.ObjectOn(obj69) + ns.MusicPushEvent() + ns.Music(4, 100) + flag74 = true + ns.Effect(ns.TELEPORT, v0, v1, 0, 0) + ns.AudioEvent(ns.TeleportIn, wp71) + ns.MoveObject(obj64, v0, v1) + ns.LockDoor(obj65) + ns.LockDoor(obj66) + ns.FrameTimer(1, EnableKeeper) + ns.FrameTimer(30, DisableKeeperDoorTrigger) +LABEL1: + return +} +func KeeperDie() { + if flag73 { + goto LABEL1 + } + ns.MusicPopEvent() + flag73 = true + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagCapture, wp48) + ns.PrintToAll("War04f:WizardDie") + ns.GiveXp(ns.GetHost(), 1000) + ns.UnlockDoor(obj68) + ns.UnlockDoor(obj67) + ns.UnlockDoor(obj66) + ns.UnlockDoor(obj65) +LABEL1: + return +} +func ClearKeeperDoor() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MoveObject(ns.GetCaller(), ns.GetWaypointX(wp72), ns.GetWaypointY(wp72)) +LABEL1: + return +} +func InitializeSkullGuns() { + obj91 = ns.Object("ArrowTrap01") + obj92 = ns.Object("ArrowTrap02") + obj93 = ns.Object("ArrowTrap03") + obj94 = ns.Object("ArrowTrap04") + obj95 = ns.Object("ArrowTrap05") + obj96 = ns.Object("ArrowTrap06") + obj97 = ns.Object("ArrowTrap07") + obj98 = ns.Object("ArrowTrap08") + obj99 = ns.Object("ArrowTrap09") + obj100 = ns.Object("ArrowTrap10") + obj101 = ns.Object("ArrowTrap11") +} +func InitializeMonsterGroups() { + gvar77 = ns.ObjectGroup("MonsterGroup01") +} +func MapInitialize() { + wp48 = ns.Waypoint("AudioOrigin") + wp76 = ns.Waypoint("SecretAudioOrigin") + InitializeSkullGuns() + InitializeSkeletonAmbush() + InitializeGuardian() + InitializeKeeper() + InitializeFistTraps() + InitializeHallwayArrowTraps() + InitializeMonsterGroups() + InitializeBlockTrap() +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func EnableMonsterGroup01() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar77) +} +func SecretSFX() { + ns.MoveWaypoint(wp76, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp76) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + ns.AggressionLevel(ns.Object("Secret01Spider"), 0.83) + SecretSFX() +} +func Secret02Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) + SecretSFX() +} +func CheckRows(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + if v0 == 6 { + goto LABEL6 + } + if v0 == 7 { + goto LABEL7 + } + if v0 == 8 { + goto LABEL8 + } + if v0 == 9 { + goto LABEL9 + } + if v0 == 10 { + goto LABEL10 + } + if v0 == 11 { + goto LABEL11 + } + goto LABEL12 +LABEL1: + if !(ivar78 > 0) { + goto LABEL13 + } + ns.ObjectOn(obj91) + goto LABEL14 +LABEL13: + ns.ObjectOff(obj91) +LABEL14: + goto LABEL12 +LABEL2: + if !(ivar79 > 0) { + goto LABEL15 + } + ns.ObjectOn(obj92) + goto LABEL16 +LABEL15: + ns.ObjectOff(obj92) +LABEL16: + goto LABEL12 +LABEL3: + if !(ivar80 > 0) { + goto LABEL17 + } + ns.ObjectOn(obj93) + goto LABEL18 +LABEL17: + ns.ObjectOff(obj93) +LABEL18: + goto LABEL12 +LABEL4: + if !(ivar81 > 0) { + goto LABEL19 + } + ns.ObjectOn(obj94) + goto LABEL20 +LABEL19: + ns.ObjectOff(obj94) +LABEL20: + goto LABEL12 +LABEL5: + if !(ivar82 > 0) { + goto LABEL21 + } + ns.ObjectOn(obj95) + goto LABEL22 +LABEL21: + ns.ObjectOff(obj95) +LABEL22: + goto LABEL12 +LABEL6: + if !(ivar83 > 0) { + goto LABEL23 + } + ns.ObjectOn(obj96) + goto LABEL24 +LABEL23: + ns.ObjectOff(obj96) +LABEL24: + goto LABEL12 +LABEL7: + if !(ivar84 > 0) { + goto LABEL25 + } + ns.ObjectOn(obj97) + goto LABEL26 +LABEL25: + ns.ObjectOff(obj97) +LABEL26: + goto LABEL12 +LABEL8: + if !(ivar85 > 0) { + goto LABEL27 + } + ns.ObjectOn(obj98) + goto LABEL28 +LABEL27: + ns.ObjectOff(obj98) +LABEL28: + goto LABEL12 +LABEL9: + if !(ivar86 > 0) { + goto LABEL29 + } + ns.ObjectOn(obj99) + goto LABEL30 +LABEL29: + ns.ObjectOff(obj99) +LABEL30: + goto LABEL12 +LABEL10: + if !(ivar87 > 0) { + goto LABEL31 + } + ns.ObjectOn(obj100) + goto LABEL32 +LABEL31: + ns.ObjectOff(obj100) +LABEL32: + goto LABEL12 +LABEL11: + if !(ivar88 > 0) { + goto LABEL33 + } + ns.ObjectOn(obj101) + goto LABEL34 +LABEL33: + ns.ObjectOff(obj101) +LABEL34: + goto LABEL12 +LABEL12: + return +} +func ActivateRow01() { + ivar78 += 1 + CheckRows(1) +} +func DisableRow01() { + ivar78 -= 1 + CheckRows(1) +} +func ActivateRow02() { + ivar79 += 1 + CheckRows(2) +} +func DisableRow02() { + ivar79 -= 1 + CheckRows(2) +} +func ActivateRow03() { + ivar80 += 1 + CheckRows(3) +} +func DisableRow03() { + ivar80 -= 1 + CheckRows(3) +} +func ActivateRow04() { + ivar81 += 1 + CheckRows(4) +} +func DisableRow04() { + ivar81 -= 1 + CheckRows(4) +} +func ActivateRow05() { + ivar82 += 1 + CheckRows(5) +} +func DisableRow05() { + ivar82 -= 1 + CheckRows(5) +} +func ActivateRow06() { + ivar83 += 1 + CheckRows(6) +} +func DisableRow06() { + ivar83 -= 1 + CheckRows(6) +} +func ActivateRow07() { + ivar84 += 1 + CheckRows(7) +} +func DisableRow07() { + ivar84 -= 1 + CheckRows(7) +} +func ActivateRow08() { + ivar85 += 1 + CheckRows(8) +} +func DisableRow08() { + ivar85 -= 1 + CheckRows(8) +} +func ActivateRow09() { + ivar86 += 1 + CheckRows(9) +} +func DisableRow09() { + ivar86 -= 1 + CheckRows(9) +} +func ActivateRow10() { + ivar87 += 1 + CheckRows(10) +} +func DisableRow10() { + ivar87 -= 1 + CheckRows(10) +} +func ActivateRow11() { + ivar88 += 1 + CheckRows(11) +} +func DisableRow11() { + ivar88 -= 1 + CheckRows(11) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war05a/dummy_test.go b/examples/war05a/dummy_test.go new file mode 100644 index 0000000..a0609dc --- /dev/null +++ b/examples/war05a/dummy_test.go @@ -0,0 +1,6 @@ +package war05a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war05a/war05a.go b/examples/war05a/war05a.go new file mode 100644 index 0000000..e610207 --- /dev/null +++ b/examples/war05a/war05a.go @@ -0,0 +1,2108 @@ +package war05a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + gvar30 int + gvar31 int + gvar32 int + gvar33 int + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + gvar67 ns.ObjectGroupID + flag68 bool + ivar69 int + gvar70 int + gvar71 int + gvar72 int + gvar73 int + gvar74 int + gvar75 int + gvar76 int + gvar77 int + gvar78 int + gvar79 int + gvar80 int + gvar81 int + gvar82 int + gvar83 int + gvar84 int + gvar85 int + gvar86 int + flag87 bool + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + obj103 ns.ObjectID + obj104 ns.ObjectID + obj105 ns.ObjectID + obj106 ns.ObjectID + obj107 ns.ObjectID + obj108 ns.ObjectID + obj109 ns.ObjectID + obj110 ns.ObjectID + obj111 ns.ObjectID + obj112 ns.ObjectID + obj113 ns.ObjectID + obj114 ns.ObjectID + obj115 ns.ObjectID + obj116 ns.ObjectID + obj117 ns.ObjectID + obj118 ns.ObjectID + obj119 ns.ObjectID + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + obj123 ns.ObjectID + obj124 ns.ObjectID + obj125 ns.ObjectID + obj126 ns.ObjectID + obj127 ns.ObjectID + obj128 ns.ObjectID + obj129 ns.ObjectID + obj130 ns.ObjectID + obj131 ns.ObjectID + obj132 ns.ObjectID + obj133 ns.ObjectID + obj134 ns.ObjectID + obj135 ns.ObjectID + obj136 ns.ObjectID + obj137 ns.ObjectID + obj138 ns.ObjectID + obj139 ns.ObjectID + obj140 ns.ObjectID + obj141 ns.ObjectID + obj142 ns.ObjectID + obj143 ns.ObjectID + obj144 ns.ObjectID + obj145 ns.ObjectID + wp146 int + wp147 int + obj148 ns.ObjectID + obj149 ns.ObjectID + obj150 ns.ObjectID + obj151 ns.ObjectID + obj152 ns.ObjectID + obj153 ns.ObjectID + obj154 ns.ObjectID + obj155 ns.ObjectID + obj156 ns.ObjectID + obj157 ns.ObjectID + obj158 ns.ObjectID + obj159 ns.ObjectID + obj160 ns.ObjectID + obj161 ns.ObjectID + obj162 ns.ObjectID + obj163 ns.ObjectID + obj164 ns.ObjectID + obj165 ns.ObjectID + obj166 ns.ObjectID + obj167 ns.ObjectID + obj168 ns.ObjectID + obj169 ns.ObjectID + obj170 ns.ObjectID + obj171 ns.ObjectID + obj172 ns.ObjectID + obj173 ns.ObjectID + obj174 ns.ObjectID + gvar175 int + gvar176 int + gvar177 int + gvar178 int + obj179 ns.ObjectID + obj180 ns.ObjectID + obj181 ns.ObjectID + obj182 ns.ObjectID + obj183 ns.ObjectID + obj184 ns.ObjectID + obj185 ns.ObjectID + obj186 ns.ObjectID + obj187 ns.ObjectID + gvar188 int + wp189 ns.WaypointID + wp190 ns.WaypointID + wp191 ns.WaypointID + wp192 ns.WaypointID + wp193 ns.WaypointID + wp194 ns.WaypointID + wp195 ns.WaypointID + obj196 ns.ObjectID + obj197 ns.ObjectID + obj198 ns.ObjectID + obj199 ns.ObjectID + gvar200 int + gvar201 int + gvar202 int + gvar203 int + wp204 ns.WaypointID + wp205 ns.WaypointID + wp206 ns.WaypointID + wp207 ns.WaypointID + wp208 ns.WaypointID + wp209 ns.WaypointID + wp210 ns.WaypointID + wp211 ns.WaypointID + wp212 ns.WaypointID + wp213 ns.WaypointID + wp214 ns.WaypointID + wp215 ns.WaypointID + wp216 ns.WaypointID + wp217 ns.WaypointID + wp218 ns.WaypointID + wp219 ns.WaypointID + wp220 ns.WaypointID + wp221 ns.WaypointID + wp222 ns.WaypointID + wp223 ns.WaypointID + wp224 ns.WaypointID + wp225 ns.WaypointID + wp226 ns.WaypointID + wp227 ns.WaypointID + wp228 ns.WaypointID + ivar229 int + gvar230 int + gvar231 int + gvar232 int + gvar233 int + gvar234 int +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + gvar9 = 5 + gvar10 = 0 + gvar11 = 1 + gvar12 = 0 + gvar13 = 1 + gvar14 = 0 + gvar15 = 1 + gvar16 = 2 + gvar17 = 3 + gvar18 = 4 + gvar19 = 5 + gvar20 = 0 + gvar21 = 1 + gvar22 = 2 + gvar23 = 3 + gvar24 = 0 + gvar25 = 1 + gvar26 = 2 + gvar27 = 3 + gvar28 = 0 + gvar29 = 1 + gvar30 = 2 + gvar31 = 3 + gvar32 = 0 + gvar33 = 1 + flag68 = false + ivar69 = 0 + gvar70 = gvar4 + gvar71 = gvar10 + gvar72 = gvar12 + gvar73 = gvar20 + gvar74 = gvar14 + gvar75 = gvar24 + gvar76 = gvar28 + gvar77 = gvar32 + gvar84 = 0 + gvar85 = 0 + gvar86 = 0 + ivar229 = 0 + gvar230 = 0 + gvar231 = 1 + gvar232 = 2 + gvar233 = 3 + gvar234 = gvar230 +} +func OgreDeath() { + ivar69 += 1 + if !ns.IsTrigger(obj51) { + goto LABEL1 + } + ns.CreatureGuard(obj130, ns.GetWaypointX(wp191), ns.GetWaypointY(wp191), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + if !(ivar69 >= 7) { + goto LABEL2 + } + SetTownDialog() + ns.Music(23, 100) +LABEL2: + return +} +func SetTownDialog() { + ns.SetDialog(obj179, ns.NORMAL, Villager1Start, Villager1End) + ns.StoryPic(obj179, "MalePic8") + ns.SetDialog(obj180, ns.NORMAL, Villager2Start, Villager2End) + ns.StoryPic(obj180, "MalePic3") + ns.SetDialog(obj181, ns.NORMAL, Villager3Start, Villager3End) + ns.StoryPic(obj181, "MalePic2") + ns.SetDialog(obj182, ns.NORMAL, Villager4Start, Villager4End) + ns.StoryPic(obj182, "MalePic14") + ns.SetDialog(obj183, ns.NORMAL, Villager5Start, Villager5End) + ns.StoryPic(obj183, "MalePic9") + ns.SetDialog(obj130, ns.NORMAL, FarmerSavedStart, FarmerSavedEnd) +} +func CheckFlame() { + if !ns.IsObjectOn(obj66) { + goto LABEL1 + } + ns.PrintToAll("Flame Exists") + goto LABEL2 +LABEL1: + ns.PrintToAll("Flame all gone :(") +LABEL2: + return +} +func FarmerSavedStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz05A.scr:FarmerIdle") +} +func FarmerSavedEnd() { + ns.SetDialog(obj130, ns.NORMAL, FarmerSavedStart, FarmerSavedEnd) +} +func BearGoAway() { + if !ns.IsCaller(obj59) { + goto LABEL1 + } + flag68 = true + ns.GoBackHome(obj59) +LABEL1: + return +} +func BearReport() { + if !flag68 { + goto LABEL1 + } + ns.AggressionLevel(obj59, 0.5) + ns.CreatureGuard(obj59, ns.GetWaypointX(wp41), ns.GetWaypointY(wp41), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 300) + flag68 = false +LABEL1: + return +} +func KillCorpses() { + ns.FrameTimer(30, KillCorpses2) +} +func DisableVillagers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp191) + v1 = ns.GetWaypointY(wp191) + v2 = ns.GetWaypointX(wp192) + v3 = ns.GetWaypointY(wp192) + ns.CreatureGuard(obj130, v0, v1, v2, v3, 0) +} +func LockDoors() { + ns.LockDoor(obj198) + ns.LockDoor(obj199) + ns.LockDoor(obj196) + ns.LockDoor(obj197) +} +func SwordsmanStart() { + var v0 int + ns.Frozen(obj144, true) + ns.CreatureIdle(obj144) + ns.LookAtObject(obj144, ns.GetHost()) + v0 = gvar72 + if v0 == gvar12 { + goto LABEL1 + } + if v0 == gvar13 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj144, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SwordsmanGreeting") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj144, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SwordsmanEnd") + goto LABEL3 +LABEL3: + return +} +func SwordsmanEnd() { + var v0 int + ns.Frozen(obj144, false) + ns.CreatureGuard(obj144, ns.GetWaypointX(wp189), ns.GetWaypointY(wp189), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) + v0 = gvar72 + if v0 == gvar12 { + goto LABEL1 + } + if v0 == gvar13 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.FrameTimer(1, SwordsmanTriggerC) + gvar72 = gvar13 + goto LABEL3 +LABEL2: + ns.LookAtDirection(obj144, ns.NE) + goto LABEL3 +LABEL3: + return +} +func DrunkStart() { + ns.LookAtObject(ns.GetTrigger(), ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:DrunkGreeting") +} +func DrunkEnd() { + ns.LookAtDirection(ns.GetTrigger(), ns.NW) +} +func FarmerStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = gvar70 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + if v2 == gvar9 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + if !ns.HasItem(ns.GetHost(), obj127) { + goto LABEL8 + } + gvar70 = gvar7 + ns.SetDialog(obj130, ns.NORMAL, FarmerStart, FarmerEnd) + FarmerStart() + goto LABEL7 + goto LABEL2 +LABEL8: + ns.CreatureIdle(obj130) + ns.LookAtObject(obj130, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerGreeting") + goto LABEL7 +LABEL2: + ns.CreatureIdle(obj130) + ns.LookAtObject(obj130, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerGreeting") + goto LABEL7 +LABEL3: + ns.CreatureIdle(obj130) + ns.LookAtObject(obj130, ns.GetHost()) + if !ns.HasItem(ns.GetHost(), obj127) { + goto LABEL9 + } + v0 = ns.GetWaypointX(wp191) + v1 = ns.GetWaypointY(wp191) + ns.AudioEvent(ns.CurePoisonCast, wp191) + ns.AudioEvent(ns.CurePoisonEffect, wp191) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + gvar70 = gvar7 + FarmerStart() + goto LABEL4 +LABEL9: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWaiting") + goto LABEL7 +LABEL4: + ns.CreatureIdle(obj130) + ns.LookAtObject(obj130, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerReturned") + goto LABEL7 +LABEL5: + ns.CreatureIdle(obj130) + ns.LookAtObject(obj130, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerIdle") + goto LABEL7 +LABEL6: + if !ns.HasItem(ns.GetHost(), obj127) { + goto LABEL10 + } + gvar70 = gvar7 + FarmerStart() + goto LABEL7 +LABEL10: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerHuffy") + goto LABEL7 +LABEL7: + return +} +func FarmerEnd() { + var ( + v0 int + v1 int + v2 int + v3 ns.ObjectID + v4 int + ) + v0 = 0 + v1 = 1 + v2 = 2 + v3 = 0 + v0 = ns.GetAnswer(obj130) + v4 = gvar70 + if v4 == gvar4 { + goto LABEL1 + } + if v4 == gvar5 { + goto LABEL2 + } + if v4 == gvar6 { + goto LABEL3 + } + if v4 == gvar7 { + goto LABEL4 + } + if v4 == gvar8 { + goto LABEL5 + } + if v4 == gvar9 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + if v0 != v1 { + goto LABEL8 + } + gvar70 = gvar6 + ns.SetDialog(obj130, ns.NORMAL, FarmerStart, FarmerEnd) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "War05Quest8", 2) + goto LABEL7 + goto LABEL2 +LABEL8: + if v0 != v2 { + goto LABEL9 + } + ns.SetDialog(obj130, ns.YESNO, FarmerStart, FarmerEnd) + gvar70 = gvar5 + goto LABEL7 + goto LABEL2 +LABEL9: + if obj130 != v3 { + goto LABEL2 + } + gvar70 = gvar4 +LABEL2: + if v0 != v1 { + goto LABEL10 + } + gvar70 = gvar6 + ns.SetDialog(obj130, ns.NORMAL, FarmerStart, FarmerEnd) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "War05Quest8", 2) + goto LABEL7 + goto LABEL3 +LABEL10: + if v0 != v2 { + goto LABEL11 + } + ns.SetDialog(obj130, ns.NORMAL, FarmerStart, FarmerEnd) + gvar70 = gvar9 + goto LABEL7 + goto LABEL3 +LABEL11: + if obj130 != v3 { + goto LABEL3 + } + gvar70 = gvar4 +LABEL3: + goto LABEL7 +LABEL4: + ns.PrintToAll("War05A.scr:ObjectiveComplete") + ns.JournalEdit(ns.GetHost(), "War05Quest8", 4) + ns.GiveXp(ns.GetHost(), 250) + ns.Drop(obj130, obj125) + ns.Drop(obj130, obj126) + ns.Delete(obj127) + EndCurse() + gvar70 = gvar8 + goto LABEL7 +LABEL5: + goto LABEL7 +LABEL6: + goto LABEL7 +LABEL7: + return +} +func HoundStart() { + ns.CreatureIdle(obj131) + ns.LookAtObject(obj131, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:HoundGreeting") +} +func HoundEnd() { + ns.SetRoamFlag(obj131, 2) + ns.Wander(obj131) +} +func FarmerWifeStart() { + var v0 int + v0 = gvar71 + if v0 == gvar10 { + goto LABEL1 + } + if v0 == gvar11 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj132, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWifeGreeting") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj132, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWifeIdle") + goto LABEL3 +LABEL3: + return +} +func FarmerWifeEnd() { + var v0 int + v0 = gvar71 + if v0 == gvar10 { + goto LABEL1 + } + if v0 == gvar11 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar71 = gvar11 + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func IngridStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = gvar76 + if v2 == gvar28 { + goto LABEL1 + } + if v2 == gvar29 { + goto LABEL2 + } + if v2 == gvar30 { + goto LABEL3 + } + if v2 == gvar31 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:IngridGreeting") + goto LABEL5 +LABEL2: + if gvar84 != 1 { + goto LABEL6 + } + v0 = ns.GetWaypointX(wp204) + v1 = ns.GetWaypointY(wp204) + ns.AudioEvent(ns.CurePoisonCast, wp204) + ns.AudioEvent(ns.CurePoisonEffect, wp204) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + gvar76 = gvar30 + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:IngridWaiting") + goto LABEL5 + goto LABEL3 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:IngridWaiting") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:IngridReturned") + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:IngridIdle") + goto LABEL5 +LABEL5: + return +} +func IngridEnd() { + var v0 int + v0 = gvar76 + if v0 == gvar28 { + goto LABEL1 + } + if v0 == gvar29 { + goto LABEL2 + } + if v0 == gvar30 { + goto LABEL3 + } + if v0 == gvar31 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar76 = gvar29 + ns.SetDialog(obj92, ns.NORMAL, IngridStart, IngridEnd) + ns.StartDialog(obj93, ns.GetHost()) + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + gvar76 = gvar31 + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func CaptainStart() { + var v2 int + v2 = gvar77 + if v2 == gvar32 { + goto LABEL1 + } + if v2 == gvar33 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:CaptainGreeting") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:CaptainWaiting") + goto LABEL3 +LABEL3: + return +} +func CaptainEnd() { + var v0 int + v0 = gvar77 + if v0 == gvar32 { + goto LABEL1 + } + if v0 == gvar33 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar77 = gvar33 + ns.StartupScreen(5) + Ingrid4() + ns.FrameTimer(1, HorvathAppears4) + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func MaidenStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + _ = v1 + _ = v0 + v2 = gvar75 + if v2 == gvar24 { + goto LABEL1 + } + if v2 == gvar25 { + goto LABEL2 + } + if v2 == gvar26 { + goto LABEL3 + } + if v2 == gvar27 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + if !ns.HasItem(ns.GetHost(), obj129) { + goto LABEL6 + } + gvar75 = gvar26 + ns.SetDialog(obj128, ns.NORMAL, MaidenStart, MaidenEnd) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:MaidenReturned") + goto LABEL5 + goto LABEL2 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:MaidenGreeting") + goto LABEL5 +LABEL2: + if !ns.HasItem(ns.GetHost(), obj129) { + goto LABEL7 + } + v0 = ns.GetWaypointX(wp209) + v1 = ns.GetWaypointY(wp209) + gvar75 = gvar26 + ns.SetDialog(obj128, ns.NORMAL, MaidenStart, MaidenEnd) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:MaidenReturned") + goto LABEL5 + goto LABEL3 +LABEL7: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:MaidenWaiting") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:MaidenReturned") + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:MaidenIdle") + goto LABEL5 +LABEL5: + return +} +func MaidenEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + ) + _ = v3 + _ = v2 + _ = v1 + v0 = 0 + v1 = 1 + v2 = 2 + v3 = 0 + v0 = ns.GetAnswer(obj128) + v4 = gvar75 + if v4 == gvar24 { + goto LABEL1 + } + if v4 == gvar25 { + goto LABEL2 + } + if v4 == gvar26 { + goto LABEL3 + } + if v4 == gvar27 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + if v0 != 1 { + goto LABEL6 + } + gvar75 = gvar25 + ns.SetDialog(obj128, ns.NORMAL, MaidenStart, MaidenEnd) + ns.JournalEntry(ns.GetHost(), "War05Quest7", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + goto LABEL5 +LABEL6: + if v0 != 2 { + goto LABEL7 + } + gvar75 = gvar24 + ns.SetDialog(obj128, ns.YESNO, MaidenStart, MaidenEnd) + goto LABEL5 +LABEL7: + if v0 != 0 { + goto LABEL2 + } + gvar75 = gvar24 + ns.SetDialog(obj128, ns.YESNO, MaidenStart, MaidenEnd) + goto LABEL5 +LABEL2: + ns.SetDialog(obj128, ns.NORMAL, MaidenStart, MaidenEnd) + goto LABEL5 +LABEL3: + gvar75 = gvar27 + ns.PrintToAll("War05A.scr:ObjectiveComplete") + ns.GiveXp(ns.GetHost(), 250) + ns.JournalEdit(ns.GetHost(), "War05Quest7", 4) + ns.Delete(obj129) + ns.Pickup(ns.GetHost(), obj123) + ns.SetDialog(obj128, ns.NORMAL, MaidenStart, MaidenEnd) + goto LABEL5 +LABEL4: + ns.SetDialog(obj128, ns.NORMAL, MaidenStart, MaidenEnd) + goto LABEL5 +LABEL5: + return +} +func BartenderStart() { + ns.Frozen(obj95, true) + ns.LookAtObject(obj95, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj95) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:BartenderGreeting") +} +func BartenderEnd() { + ns.Frozen(obj95, false) + ns.LookAtDirection(obj95, ns.SE) +} +func EndCurse() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp191) + v9 = ns.GetWaypointY(wp191) + v0 = ns.GetWaypointX(wp212) + v1 = ns.GetWaypointY(wp212) + v2 = ns.GetWaypointX(wp210) + v3 = ns.GetWaypointY(wp210) + v6 = ns.GetWaypointX(wp211) + v7 = ns.GetWaypointY(wp211) + v4 = ns.GetObjectX(obj131) + v5 = ns.GetObjectY(obj131) + ns.Frozen(ns.GetHost(), true) + LetterBoxOn() + ns.AudioEvent(ns.CurePoisonCast, wp191) + ns.AudioEvent(ns.CurePoisonEffect, wp191) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(10, EndCurse2) +} +func EndCurse2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp191) + v9 = ns.GetWaypointY(wp191) + v0 = ns.GetWaypointX(wp212) + v1 = ns.GetWaypointY(wp212) + v2 = ns.GetWaypointX(wp210) + v3 = ns.GetWaypointY(wp210) + v6 = ns.GetWaypointX(wp211) + v7 = ns.GetWaypointY(wp211) + v4 = ns.GetObjectX(obj131) + v5 = ns.GetObjectY(obj131) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(7, EndCurse3) +} +func EndCurse3() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp191) + v9 = ns.GetWaypointY(wp191) + v0 = ns.GetWaypointX(wp212) + v1 = ns.GetWaypointY(wp212) + v2 = ns.GetWaypointX(wp210) + v3 = ns.GetWaypointY(wp210) + v6 = ns.GetWaypointX(wp211) + v7 = ns.GetWaypointY(wp211) + v4 = ns.GetObjectX(obj131) + v5 = ns.GetObjectY(obj131) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(3, EndCurse4) +} +func EndCurse4() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + v8 = ns.GetWaypointX(wp191) + v9 = ns.GetWaypointY(wp191) + v0 = ns.GetWaypointX(wp212) + v1 = ns.GetWaypointY(wp212) + v2 = ns.GetWaypointX(wp210) + v3 = ns.GetWaypointY(wp210) + v6 = ns.GetWaypointX(wp211) + v7 = ns.GetWaypointY(wp211) + v4 = ns.GetObjectX(obj131) + v5 = ns.GetObjectY(obj131) + ns.Effect(ns.BLUE_SPARKS, v4, v5, 0, 0) + ns.MoveObject(obj131, v0, v1) + ns.MoveObject(obj132, v4, v5) + ns.CreatureGuard(obj132, v2, v3, v6, v7, 0) + ns.CreatureGuard(obj130, v8, v9, v8, v9, 0) +} +func EndCurse5() { + ns.LookAtObject(obj132, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj132) + ns.StartDialog(obj132, ns.GetHost()) +} +func FrogStart() { + var v0 int + v0 = gvar73 + if v0 == gvar20 { + goto LABEL1 + } + if v0 == gvar21 { + goto LABEL2 + } + if v0 == gvar22 { + goto LABEL3 + } + if v0 == gvar23 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.LookAtObject(obj134, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogGreeting") + ns.Frozen(obj134, false) + ns.ObjectOff(obj136) + ns.ObjectOff(obj137) + ns.ObjectOff(obj138) + ns.ObjectOn(obj134) + ns.CreatureFollow(obj134, ns.GetHost()) + goto LABEL5 +LABEL2: + ns.LookAtObject(obj134, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogFollowing") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj134, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogThanks") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj134, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogIdle") + goto LABEL5 +LABEL5: + return +} +func FrogEnd() { + var v0 int + v0 = gvar73 + if v0 == gvar20 { + goto LABEL1 + } + if v0 == gvar21 { + goto LABEL2 + } + if v0 == gvar22 { + goto LABEL3 + } + if v0 == gvar23 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar73 = gvar21 + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + gvar73 = gvar23 + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func FrogGuard() { + gvar73 = gvar22 + ns.Enchant(obj134, ns.ENCHANT_INVULNERABLE, 0) + gvar86 = 1 +} +func Villager1Start() { + ns.Frozen(obj179, true) + ns.CreatureIdle(obj179) + ns.LookAtObject(obj179, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman9Talk01") +} +func Villager1End() { + ns.Frozen(obj179, false) + ns.SetRoamFlag(obj179, 32) + ns.Wander(obj179) +} +func Villager2Start() { + ns.Frozen(obj180, true) + ns.CreatureIdle(obj180) + ns.LookAtObject(obj180, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman10Talk01") +} +func Villager2End() { + ns.Frozen(obj180, false) + ns.SetRoamFlag(obj180, 32) + ns.Wander(obj180) +} +func Villager3Start() { + ns.Frozen(obj181, true) + ns.CreatureIdle(obj181) + ns.LookAtObject(obj181, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman11Talk01") +} +func Villager3End() { + ns.Frozen(obj181, false) + ns.SetRoamFlag(obj181, 32) + ns.Wander(obj181) +} +func Villager4Start() { + ns.Frozen(obj182, true) + ns.CreatureIdle(obj182) + ns.LookAtObject(obj182, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman11Talk02") +} +func Villager4End() { + ns.Frozen(obj182, false) + ns.SetRoamFlag(obj182, 32) + ns.Wander(obj182) +} +func Villager5Start() { + ns.Frozen(obj183, true) + ns.CreatureIdle(obj183) + ns.LookAtObject(obj183, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:VillagerGreeting") +} +func Villager5End() { + ns.Frozen(obj183, false) + ns.SetRoamFlag(obj183, 32) + ns.Wander(obj183) +} +func SadVillagerStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + _ = v1 + _ = v0 + v2 = gvar74 + if v2 == gvar14 { + goto LABEL1 + } + if v2 == gvar15 { + goto LABEL2 + } + if v2 == gvar16 { + goto LABEL3 + } + if v2 == gvar17 { + goto LABEL4 + } + if v2 == gvar18 { + goto LABEL5 + } + if v2 == gvar19 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.CreatureIdle(obj133) + ns.LookAtObject(obj133, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerGreeting") + goto LABEL7 +LABEL2: + ns.CreatureIdle(obj133) + ns.LookAtObject(obj133, ns.GetHost()) + if gvar86 != 1 { + goto LABEL8 + } + v0 = ns.GetWaypointX(wp206) + v1 = ns.GetWaypointY(wp206) + ns.AudioEvent(ns.CurePoisonCast, wp206) + ns.AudioEvent(ns.CurePoisonEffect, wp206) + gvar74 = gvar16 + ns.SetDialog(obj133, ns.NEXT, SadVillagerStart, SadVillagerEnd) + ns.CreatureFollow(obj134, obj133) + SadVillagerStart() + goto LABEL3 +LABEL8: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerWaiting") + goto LABEL7 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerReturned") + goto LABEL7 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerIdle") + goto LABEL7 +LABEL5: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerDead") + goto LABEL7 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerDeadIdle") + goto LABEL7 +LABEL7: + return +} +func SadVillagerEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + ) + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v0 = 0 + v1 = 1 + v2 = 2 + v3 = 0 + v0 = ns.GetAnswer(obj133) + v4 = gvar74 + if v4 == gvar14 { + goto LABEL1 + } + if v4 == gvar15 { + goto LABEL2 + } + if v4 == gvar16 { + goto LABEL3 + } + if v4 == gvar17 { + goto LABEL4 + } + if v4 == gvar18 { + goto LABEL5 + } + if v4 == gvar19 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + v0 = 1 + if 1 == 0 { + goto LABEL8 + } + gvar74 = gvar15 + ns.SetDialog(obj133, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + ns.JournalEntry(ns.GetHost(), "War05Quest9", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + goto LABEL7 +LABEL8: + v0 = 2 + if 2 == 0 { + goto LABEL9 + } + gvar74 = gvar14 + ns.SetDialog(obj133, ns.YESNO, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL9: + v0 = 0 + if 0 == 0 { + goto LABEL2 + } + gvar74 = gvar14 + ns.SetDialog(obj133, ns.YESNO, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL2: + ns.SetDialog(obj133, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL3: + gvar74 = gvar17 + ns.SetDialog(obj133, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + ns.PrintToAll("War05A.scr:ObjectiveComplete") + ns.JournalEdit(ns.GetHost(), "War05Quest9", 4) + ns.GiveXp(ns.GetHost(), 250) + ns.Drop(obj133, obj124) + ns.FrameTimer(1, FrogThanksPlayer) + ns.FrameTimer(1, SadVillagerGuard) + goto LABEL7 +LABEL4: + ns.SetDialog(obj133, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL5: + gvar74 = gvar19 + ns.Move(obj133, wp206) + ns.SetCallback(obj133, 9, DummyBump) + ns.JournalDelete(ns.GetHost(), "War05Quest9") + ns.PrintToAll("War05A.scr:ObjectiveFailed") + ns.SetDialog(obj133, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL6: + ns.CancelDialog(obj133) + goto LABEL7 +LABEL7: + return +} +func OwnVillagers() { + ns.FrameTimer(1, OwnVillagers2) +} +func OwnVillagers2() { + ns.SetOwner(ns.GetHost(), obj134) + ns.SetOwner(ns.GetHost(), obj93) + ns.SetOwner(ns.GetHost(), obj92) + ns.Frozen(obj179, true) + ns.Frozen(obj180, true) + ns.Frozen(obj181, true) + ns.Frozen(obj182, true) + ns.Frozen(obj183, true) + ns.Frozen(obj184, true) + ns.Frozen(obj185, true) + ns.Frozen(obj186, true) + ns.Frozen(obj187, true) + ns.Frozen(obj50, true) + ns.Frozen(obj51, true) + ns.Frozen(obj130, true) + ns.Frozen(obj48, true) + ns.Frozen(obj49, true) + ns.Frozen(obj54, true) + ns.Frozen(obj55, true) + ns.RetreatLevel(obj47, 0) + ns.RetreatLevel(obj48, 0) + ns.RetreatLevel(obj49, 0) + ns.RetreatLevel(obj50, 0) + ns.RetreatLevel(obj51, 0) +} +func KillCorpses2() { + ns.Damage(obj148, 0, 300, 5) + ns.Damage(obj149, 0, 300, 5) + ns.Damage(obj150, 0, 300, 5) + ns.Damage(obj151, 0, 300, 5) + ns.Damage(obj152, 0, 300, 5) + ns.Damage(obj153, 0, 300, 5) + ns.Damage(obj154, 0, 300, 5) + ns.Damage(obj155, 0, 300, 5) + ns.Damage(obj156, 0, 300, 5) + ns.Damage(obj157, 0, 300, 5) + ns.Damage(obj158, 0, 300, 5) + ns.Damage(obj159, 0, 300, 5) + ns.Damage(obj160, 0, 300, 5) + ns.Damage(obj161, 0, 300, 5) + ns.Damage(obj162, 0, 300, 5) + ns.Damage(obj163, 0, 300, 0) + ns.Damage(obj164, 0, 300, 0) + ns.Damage(obj165, 0, 300, 0) + ns.Damage(obj143, 0, 300, 0) + ns.Damage(obj45, 0, 300, 0) + ns.Damage(obj46, 0, 300, 0) + ns.Damage(obj60, 0, 300, 0) + ns.Damage(obj61, 0, 300, 0) + ns.Damage(obj62, 0, 300, 0) + ns.Damage(obj63, 0, 300, 0) + ns.Damage(obj64, 0, 300, 0) + ns.Damage(obj65, 0, 300, 0) +} +func VillagePath() { + ns.SetRoamFlag(obj179, 32) + ns.SetRoamFlag(obj180, 32) + ns.SetRoamFlag(obj181, 32) + ns.SetRoamFlag(obj182, 32) + ns.SetRoamFlag(obj183, 32) + ns.Wander(obj179) + ns.Wander(obj180) + ns.Wander(obj181) + ns.Wander(obj182) + ns.Wander(obj183) +} +func PickUpObjects() { +} +func StartSwordsmanTrigger() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.FrameTimer(1, SwordsmanTrigger) +LABEL1: + return +} +func SwordsmanTrigger() { + ns.AggressionLevel(obj144, 0.83) + ns.AggressionLevel(obj56, 0.83) + ns.AggressionLevel(obj47, 0.83) + ns.Attack(obj47, obj144) +} +func SwordsmanTriggerB() { + gvar72 = gvar12 + ns.SetDialog(obj144, ns.NORMAL, SwordsmanStart, SwordsmanEnd) + ns.StoryPic(obj144, "Warrior8Pic") + ns.FrameTimer(1, SwordsmanTriggerC) +} +func SwordsmanTriggerC() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp189) + v1 = ns.GetWaypointY(wp189) + v2 = ns.GetWaypointX(wp190) + v3 = ns.GetWaypointY(wp190) + ns.CreatureGuard(obj144, v0, v1, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) + ns.CreatureGuard(obj56, v2, v3, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) +} +func SwordsmanTriggerD() { +} +func ShopKeeperGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp225) + v1 = ns.GetWaypointY(wp225) + v2 = ns.GetWaypointX(wp226) + v3 = ns.GetWaypointY(wp226) + ns.CreatureGuard(obj96, v0, v1, v2, v3, 0) + ns.FrameTimer(1, GypsyGuard) +} +func BartenderGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp227) + v1 = ns.GetWaypointY(wp227) + v2 = ns.GetWaypointX(wp228) + v3 = ns.GetWaypointY(wp228) + ns.CreatureGuard(obj95, v0, v1, v2, v3, 0) + ns.FrameTimer(1, SadVillagerGuard) +} +func GypsyGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp223) + v1 = ns.GetWaypointY(wp223) + v2 = ns.GetWaypointX(wp224) + v3 = ns.GetWaypointY(wp224) + ns.CreatureGuard(obj94, v0, v1, v2, v3, 0) + ns.FrameTimer(1, BartenderGuard) +} +func SadVillagerGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp206) + v1 = ns.GetWaypointY(wp206) + v2 = ns.GetWaypointX(wp207) + v3 = ns.GetWaypointY(wp207) + ns.CreatureGuard(obj133, v0, v1, v2, v3, 0) +} +func OpenGates() { + ns.WallOpen(ns.Wall(88, 34)) + ns.WallOpen(ns.Wall(87, 35)) + ns.WallOpen(ns.Wall(88, 36)) + ns.WallOpen(ns.Wall(89, 35)) + ns.PrintToAll("War05A.scr:CityGatesOpen") +} +func CloseGates() { + ns.WallClose(ns.Wall(88, 34)) + ns.WallClose(ns.Wall(87, 35)) + ns.WallClose(ns.Wall(88, 36)) + ns.WallClose(ns.Wall(89, 35)) + ns.PrintToAll("War05A.scr:CityGatesClosed") +} +func PlayerDeath() { + ns.DeathScreen(5) +} +func MapEntry() { + ns.Music(23, 100) + ns.Frozen(ns.GetHost(), false) + LetterBoxOff() + if ns.GetQuestStatus("War05B:ChicksSaved") != 1 { + goto LABEL1 + } + ns.Delete(obj93) + ns.Delete(obj92) +LABEL1: + flag87 = true +} +func NoBump() { + flag87 = false + ns.FrameTimer(90, YesBump) +} +func YesBump() { + flag87 = true +} +func BumpVillager() { +} +func LetterBoxOn() { + ns.WideScreen(true) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func FrogThanksPlayer() { + ns.StartDialog(obj134, ns.GetHost()) +} +func DummyBump() { +} +func FreePlayer() { + ns.Frozen(ns.GetHost(), false) +} +func HorvathAppears() { + ns.Frozen(ns.GetHost(), true) + LetterBoxOn() + ns.FrameTimer(30, HorvathAppears2) + ns.FrameTimer(1, VillagePath) +} +func HorvathAppears2() { + ns.Move(obj93, wp213) + ns.FrameTimer(45, HorvathAppears3) +} +func HorvathAppears3() { + ns.Frozen(obj93, true) + ns.CreatureIdle(obj93) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(obj93, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj93) + ns.StartDialog(obj93, ns.GetHost()) +} +func HorvathAppears4() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp215) + v1 = ns.GetWaypointY(wp215) + v2 = ns.GetWaypointX(wp213) + v3 = ns.GetWaypointY(wp213) + ns.Frozen(obj93, false) + ns.CreatureGuard(obj93, v0, v1, v2, v3, 0) + LetterBoxOff() + ns.FrameTimer(45, HorvathAppears5) +} +func HorvathAppears5() { + ns.Frozen(ns.GetHost(), false) +} +func Ingrid1() { + ns.ObjectOff(obj120) + ns.ObjectOff(obj121) + ns.ObjectOff(obj122) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + LetterBoxOn() + ns.Move(obj92, wp204) + ns.Move(obj93, wp213) +} +func Ingrid2() { + ns.Chat(obj92, "War05A.scr:IngridScream") +} +func Ingrid3() { + if !ns.IsCaller(obj92) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj92, true) + ns.CreatureIdle(obj92) + ns.LookAtObject(ns.GetHost(), obj92) + ns.LookAtObject(obj92, ns.GetHost()) + ns.Frozen(obj93, true) + ns.CreatureIdle(obj93) + ns.LookAtObject(obj93, ns.GetHost()) + ns.DestroyChat(obj92) + ns.StartDialog(obj92, ns.GetHost()) +LABEL1: + return +} +func Ingrid4() { + ns.Frozen(obj92, false) + ns.Move(obj92, wp205) + ns.FrameTimer(30, Ingrid5) +} +func Ingrid5() { + ns.JournalEntry(ns.GetHost(), "War05Quest4", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.Frozen(ns.GetHost(), false) +} +func Ingrid6() { + ns.CreatureGuard(obj92, ns.GetObjectX(obj92), ns.GetObjectY(obj92), ns.GetObjectX(ns.GetHost()), ns.GetObjectX(ns.GetHost()), 0) +} +func MapInitialize() { + wp34 = ns.Waypoint("WoundedRefugeeWayPoint") + wp35 = ns.Waypoint("WoundedRefugeeWayPoint2") + wp36 = ns.Waypoint("DeadGuyWP") + wp39 = ns.Waypoint("PlayerSounds") + wp37 = ns.Waypoint("LunchOgre1WP") + wp38 = ns.Waypoint("LunchOgre2WP") + wp40 = ns.Waypoint("WellWP") + wp41 = ns.Waypoint("SecretBearWP") + obj42 = ns.Object("WoundedRefugee") + obj43 = ns.Object("WoundedRefugee2") + obj44 = ns.Object("Antidote") + obj45 = ns.Object("Kill") + obj46 = ns.Object("Kill2") + obj47 = ns.Object("FirstOgre") + obj48 = ns.Object("LunchOgre1") + obj49 = ns.Object("LunchOgre2") + obj50 = ns.Object("TownOgre1") + obj51 = ns.Object("TownOgre2") + obj55 = ns.Object("DeadGuy") + obj56 = ns.Object("Swordsman2") + obj57 = ns.Object("Archer1") + obj58 = ns.Object("Archer2") + obj54 = ns.Object("BruteBoss") + obj52 = ns.Object("MoreOgre1") + obj53 = ns.Object("MoreOgre2") + obj59 = ns.Object("SecretBear") + obj60 = ns.Object("Bubbles1") + obj61 = ns.Object("Bubbles2") + obj62 = ns.Object("Bubbles3") + obj63 = ns.Object("Bubbles4") + obj64 = ns.Object("Bubbles5") + obj65 = ns.Object("Bubbles6") + obj66 = ns.Object("TestFlame") + gvar67 = ns.ObjectGroup("OgreAttackTriggers") + obj93 = ns.Object("W5Captain") + obj92 = ns.Object("W5Ingrid") + obj95 = ns.Object("W5Bartender") + obj96 = ns.Object("W5ShopKeeper") + obj94 = ns.Object("W5Gypsy") + obj120 = ns.Object("CaptainTrigger1") + obj121 = ns.Object("CaptainTrigger2") + obj122 = ns.Object("CaptainTrigger3") + obj97 = ns.Object("BartenderTrigger1") + obj98 = ns.Object("BartenderTrigger2") + obj99 = ns.Object("ShopKeeperTrigger1") + obj100 = ns.Object("ShopKeeperTrigger2") + obj101 = ns.Object("GypsyTrigger1") + obj102 = ns.Object("GypsyTrigger2") + obj103 = ns.Object("GypsyTrigger3") + obj104 = ns.Object("GypsyTrigger4") + obj105 = ns.Object("GypsyTrigger5") + obj106 = ns.Object("GypsyTrigger6") + obj107 = ns.Object("GypsyTrigger7") + obj108 = ns.Object("GypsyTrigger8") + obj109 = ns.Object("GypsyTrigger9") + obj110 = ns.Object("GypsyEndTrigger1") + obj111 = ns.Object("GypsyEndTrigger2") + obj112 = ns.Object("GypsyEndTrigger3") + obj113 = ns.Object("GypsyEndTrigger4") + obj114 = ns.Object("GypsyEndTrigger5") + obj115 = ns.Object("GypsyEndTrigger6") + obj116 = ns.Object("GypsyEndTrigger7") + obj117 = ns.Object("GypsyEndTrigger8") + obj118 = ns.Object("GypsyEndTrigger9") + obj144 = ns.Object("W5Swordsman") + obj145 = ns.Object("W5Swordsman2") + wp146 = int(ns.Object("SwordsmanTrigger1")) + wp147 = int(ns.Object("SwordsmanTrigger2")) + obj143 = ns.Object("KeyGuy") + obj140 = ns.Object("W5Drunk1") + obj141 = ns.Object("W5Drunk2") + obj142 = ns.Object("W5Drunk3") + obj123 = ns.Object("MaidenReward") + obj124 = ns.Object("SadVillagerReward") + obj125 = ns.Object("FarmerReward1") + obj126 = ns.Object("FarmerReward2") + obj130 = ns.Object("W5Farmer") + obj131 = ns.Object("W5Hound") + obj132 = ns.Object("W5FarmerWife") + obj133 = ns.Object("W5SadVillager") + obj134 = ns.Object("W5Frog") + obj135 = ns.Object("FrogTrigger") + obj136 = ns.Object("FrogTrigger1") + obj137 = ns.Object("FrogTrigger2") + obj138 = ns.Object("FrogTrigger3") + obj139 = ns.Object("FrogTrigger4") + obj127 = ns.Object("FarmerStaff") + obj88 = ns.Object("AutoSave1Trigger") + obj89 = ns.Object("AutoSave2Trigger") + obj90 = ns.Object("AutoSave3Trigger") + obj91 = ns.Object("AutoSave4Trigger") + obj148 = ns.Object("Corpse1") + obj149 = ns.Object("Corpse2") + obj150 = ns.Object("Corpse3") + obj151 = ns.Object("Corpse4") + obj152 = ns.Object("Corpse5") + obj153 = ns.Object("Corpse6") + obj154 = ns.Object("Corpse7") + obj155 = ns.Object("Corpse8") + obj156 = ns.Object("Corpse9") + obj157 = ns.Object("Corpse10") + obj158 = ns.Object("Corpse11") + obj159 = ns.Object("Corpse12") + obj160 = ns.Object("Corpse13") + obj161 = ns.Object("Corpse14") + obj162 = ns.Object("Corpse15") + obj119 = ns.Object("JackLine5Trigger") + obj163 = ns.Object("OgreCorpse1") + obj164 = ns.Object("OgreCorpse2") + obj165 = ns.Object("OgreCorpse3") + obj128 = ns.Object("W5Maiden") + obj129 = ns.Object("MaidenObject") + obj123 = ns.Object("MaidenReward") + obj166 = ns.Object("Ogre1") + obj167 = ns.Object("Ogre2") + obj168 = ns.Object("Ogre3") + obj169 = ns.Object("Ogre4") + obj170 = ns.Object("Ogre5") + obj171 = ns.Object("Ogre6") + obj172 = ns.Object("Ogre7") + obj173 = ns.Object("Ogre8") + obj174 = ns.Object("Ogre9") + obj174 = ns.Object("Ogre10") + obj174 = ns.Object("Ogre11") + obj174 = ns.Object("Ogre12") + obj174 = ns.Object("Ogre13") + obj196 = ns.Object("HouseDoor1") + obj197 = ns.Object("HouseDoor1") + obj198 = ns.Object("CryptDoor1") + obj199 = ns.Object("CryptDoor2") + obj179 = ns.Object("W5Villager1") + obj180 = ns.Object("W5Villager2") + obj181 = ns.Object("W5Villager3") + obj182 = ns.Object("W5Villager4") + obj183 = ns.Object("W5Villager5") + obj184 = ns.Object("W5Villager6") + obj185 = ns.Object("W5Villager7") + obj186 = ns.Object("W5Villager8") + obj187 = ns.Object("W5Villager9") + wp190 = ns.Waypoint("Swordsman2WayPoint") + wp189 = ns.Waypoint("SwordsmanWayPoint") + wp146 = int(ns.Waypoint("SwordsmanTrigger1")) + wp147 = int(ns.Waypoint("SwordsmanTrigger2")) + wp204 = ns.Waypoint("IngridWayPoint") + wp205 = ns.Waypoint("IngridWayPoint2") + wp213 = ns.Waypoint("HorvathWayPoint") + wp214 = ns.Waypoint("HorvathWayPoint2") + wp215 = ns.Waypoint("HorvathAppears") + wp209 = ns.Waypoint("MaidenWayPoint") + wp191 = ns.Waypoint("FarmerWayPoint") + wp192 = ns.Waypoint("Farmer2WayPoint") + wp210 = ns.Waypoint("FarmerWifeWayPoint") + wp211 = ns.Waypoint("FarmerWife2WayPoint") + wp193 = ns.Waypoint("HoundWayPoint") + wp212 = ns.Waypoint("Hound2WayPoint") + wp208 = ns.Waypoint("WoundedVillagerWayPoint") + wp222 = ns.Waypoint("MaidenRewardWayPoint") + wp206 = ns.Waypoint("SadVillagerWayPoint") + wp207 = ns.Waypoint("SadVillagerWayPoint2") + wp194 = ns.Waypoint("FrogWayPoint1") + wp195 = ns.Waypoint("FrogWayPoint2") + wp216 = ns.Waypoint("Villager1Goal") + wp217 = ns.Waypoint("Villager2Goal") + wp218 = ns.Waypoint("Villager3Goal") + wp219 = ns.Waypoint("Villager4Goal") + wp220 = ns.Waypoint("Villager5Goal") + wp223 = ns.Waypoint("GypsyWayPoint") + wp224 = ns.Waypoint("GypsyWayPoint2") + wp225 = ns.Waypoint("ShopKeeperWayPoint") + wp226 = ns.Waypoint("ShopKeeperWayPoint2") + wp227 = ns.Waypoint("BartenderWayPoint") + wp228 = ns.Waypoint("BartenderWayPoint2") + wp221 = ns.Waypoint("PlayerStartWayPoint") + ns.SetDialog(obj140, ns.NORMAL, DrunkStart, DrunkEnd) + ns.StoryPic(obj140, "Townsman3Pic") + ns.SetDialog(obj141, ns.NORMAL, DrunkStart, DrunkEnd) + ns.StoryPic(obj141, "Townsman2Pic") + ns.SetDialog(obj142, ns.NORMAL, DrunkStart, DrunkEnd) + ns.StoryPic(obj142, "Townsman1Pic") + ns.StoryPic(obj130, "ThaviusPic") + ns.SetDialog(obj131, ns.NORMAL, HoundStart, HoundEnd) + ns.StoryPic(obj131, "WolfPic") + ns.SetDialog(obj133, ns.YESNO, SadVillagerStart, SadVillagerEnd) + ns.StoryPic(obj133, "Townsman3Pic") + ns.SetDialog(obj134, ns.NORMAL, FrogStart, FrogEnd) + ns.StoryPic(obj134, "FrogPic") + ns.SetDialog(obj92, ns.NEXT, IngridStart, IngridEnd) + ns.StoryPic(obj92, "IngridPic") + ns.SetDialog(obj93, ns.NORMAL, CaptainStart, CaptainEnd) + ns.StoryPic(obj93, "AirshipCaptainPic") + ns.SetDialog(obj132, ns.NORMAL, FarmerWifeStart, FarmerWifeEnd) + ns.StoryPic(obj132, "MaidenPic") + ns.SetDialog(obj128, ns.YESNO, MaidenStart, MaidenEnd) + ns.StoryPic(obj128, "MaidenPic") + ns.Frozen(obj134, true) + DisableVillagers() + KillCorpses() + LockDoors() + OwnVillagers() + HoundEnd() + ShopKeeperGuard() +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func FrogReturned() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + if !ns.IsCaller(obj134) { + goto LABEL1 + } + v0 = ns.GetWaypointX(wp194) + v1 = ns.GetWaypointY(wp194) + v2 = ns.GetWaypointX(wp195) + v3 = ns.GetWaypointY(wp195) + ns.ObjectOff(obj135) + ns.CreatureGuard(obj134, v0, v1, v2, v3, 0) + gvar74 = gvar15 +LABEL1: + return +} +func FrogDeath() { + gvar86 = 2 + gvar74 = gvar18 + ns.CancelDialog(obj134) +} +func AutoSave1() { + ns.AutoSave() + ns.ObjectOff(obj88) +} +func AutoSave2() { + ns.AutoSave() + ns.ObjectOff(obj89) +} +func AutoSave3() { + ns.AutoSave() + ns.FrameTimer(1, VillagePath) + ns.ObjectOff(obj90) +} +func AutoSave4() { + ns.AutoSave() + ns.ObjectOff(obj91) +} +func SecretFound() { + ns.PrintToAll("War05A.scr:Secret") + ns.MoveWaypoint(wp39, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp39) + ns.GiveXp(ns.GetHost(), 250) +} +func Hint() { + ns.PrintToAll("Journal:War05Hint1") + ns.JournalEntry(ns.GetHost(), "War05Hint1", 4) +} +func CrapFile() { +} +func OgreAttackStart() { + ns.ObjectGroupOff(gvar67) + UnfreezeAll() + ns.Music(26, 100) + ns.ObjectOn(obj52) + ns.ObjectOn(obj53) + ns.Frozen(obj48, false) + ns.Frozen(obj49, false) + ns.Frozen(obj55, false) + ns.Attack(obj55, obj48) + ns.Attack(obj48, obj55) + ns.Attack(obj49, obj55) +} +func DeadGuyArrive() { + if !ns.IsCaller(obj55) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj55, true) + ns.Frozen(obj48, true) + ns.Frozen(obj49, true) + ns.CreatureIdle(obj55) + ns.CreatureIdle(obj48) + ns.CreatureIdle(obj49) + ns.LookAtObject(obj48, obj55) + ns.LookAtObject(obj55, obj49) + ns.LookAtObject(obj49, obj55) + ns.SecondTimer(2, OgresAttackDeadGuy) +LABEL1: + return +} +func OgresAttackDeadGuy() { + ns.Frozen(obj55, false) + ns.Frozen(obj48, false) + ns.Frozen(obj49, false) + ns.Frozen(obj54, false) + ns.Attack(obj55, obj49) + ns.Attack(obj48, obj55) + ns.Attack(obj49, obj55) +} +func DeadGuyDie() { + ns.AggressionLevel(obj48, 0.83) + ns.AggressionLevel(obj49, 0.83) +} +func LunchOgreReport() { + if !(ns.CurrentHealth(obj55) > 0) { + goto LABEL1 + } + ns.Attack(ns.GetTrigger(), obj55) +LABEL1: + return +} +func LunchOgre1Trigger() { + if !ns.IsCaller(obj48) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ivar229 += 1 + ns.AggressionLevel(obj48, 0.83) +LABEL1: + return +} +func LunchOgre2Trigger() { + if !ns.IsCaller(obj49) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ivar229 += 1 + ns.AggressionLevel(obj49, 0.83) +LABEL1: + return +} +func UnfreezeAll() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj179, false) + ns.Frozen(obj180, false) + ns.Frozen(obj181, false) + ns.Frozen(obj182, false) + ns.Frozen(obj183, false) + ns.Frozen(obj184, false) + ns.Frozen(obj185, false) + ns.Frozen(obj186, false) + ns.Frozen(obj187, false) + ns.Frozen(obj50, false) + ns.Frozen(obj51, false) + ns.Frozen(obj130, false) + ns.Frozen(obj54, false) + ns.Wander(obj130) + ns.CreatureFollow(obj51, obj130) +} +func GoAway() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + if !(ns.CurrentHealth(ns.GetCaller()) > 0) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp40) +} +func KillWoundedRefugee2() { + ns.Damage(obj42, 0, 15, 5) +} +func WoundedRefugeeStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = gvar234 + if v2 == gvar230 { + goto LABEL1 + } + if v2 == gvar231 { + goto LABEL2 + } + if v2 == gvar232 { + goto LABEL3 + } + if v2 == gvar233 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War05A:WoundedRefugeeGreeting") + goto LABEL5 +LABEL2: + if !ns.HasItem(ns.GetHost(), obj44) { + goto LABEL6 + } + v0 = ns.GetWaypointX(wp34) + v1 = ns.GetWaypointY(wp34) + ns.AudioEvent(ns.CurePoisonCast, wp34) + ns.AudioEvent(ns.CurePoisonEffect, wp34) + ns.Delete(obj42) + obj42 = obj43 + ns.MoveObject(obj42, v0, v1) + gvar234 = gvar232 + WoundedRefugeeStart() + goto LABEL3 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "War05A:WoundedRefugeeWaiting") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War05A:WoundedRefugeeHealed") + gvar234 = gvar232 + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "War05A:WoundedRefugeeIdle") + goto LABEL5 +LABEL5: + return +} +func WoundedRefugeeEnd() { + var v0 int + v0 = gvar234 + if v0 == gvar230 { + goto LABEL1 + } + if v0 == gvar231 { + goto LABEL2 + } + if v0 == gvar232 { + goto LABEL3 + } + if v0 == gvar233 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar234 = gvar231 + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + gvar234 = gvar233 + ns.Move(obj42, wp35) + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func KillWoundedRefugee() { + ns.FrameTimer(30, KillWoundedRefugee2) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapEntry": + MapEntry() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war05b/dummy_test.go b/examples/war05b/dummy_test.go new file mode 100644 index 0000000..723c085 --- /dev/null +++ b/examples/war05b/dummy_test.go @@ -0,0 +1,6 @@ +package war05b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war05b/war05b.go b/examples/war05b/war05b.go new file mode 100644 index 0000000..8ae3021 --- /dev/null +++ b/examples/war05b/war05b.go @@ -0,0 +1,615 @@ +package war05b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + gvar5 ns.WallGroupID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + wp11 ns.WaypointID + gvar12 int + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + ivar25 int + flag26 bool + flag27 bool + flag28 bool + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + gvar50 ns.ObjectGroupID + gvar51 ns.ObjectGroupID + gvar52 ns.WallGroupID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + wp59 ns.WaypointID + wp60 ns.WaypointID + wp61 ns.WaypointID + wp62 ns.WaypointID + wp63 ns.WaypointID + wp64 ns.WaypointID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID + wp69 ns.WaypointID + gvar70 ns.ObjectGroupID +) + +func init() { + gvar12 = 0 + gvar13 = 1 + gvar14 = 2 + gvar15 = 3 + gvar16 = 4 + gvar17 = 5 + gvar18 = 6 + gvar19 = 7 + gvar20 = 8 + gvar21 = gvar12 + gvar22 = gvar14 + gvar23 = gvar16 + gvar24 = gvar19 + ivar25 = 0 + flag26 = false + flag27 = false + flag28 = false +} +func StopElevator() { + ns.ObjectOff(obj4) + ns.FrameTimer(60, LowerKeyProtectWalls) +} +func LowerKeyProtectWalls() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar5) + ns.NoWallSound(false) +} +func RaiseKey() { + ns.ObjectOn(obj4) + ns.FrameTimer(5, StopElevator) +} +func UnlockMainGates() { + ns.ObjectOff(obj8) + ns.UnlockDoor(obj6) + ns.UnlockDoor(obj7) +} +func DefendCage() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Attack(ns.GetTrigger(), ns.GetHost()) +LABEL1: + return +} +func ReturnToPost() { + if !(ns.IsCaller(obj9) || ns.IsCaller(obj10)) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func SecretFound() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp11, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp11) + ns.GiveXp(ns.GetHost(), 40) +} +func CallForGuards() { + ns.Frozen(obj45, true) + ns.CreatureIdle(obj45) + ns.SetDialog(obj45, ns.NEXT, KingStart, KingEnd) + ns.StoryPic(obj45, "OgreWarlordPic") + ns.StartDialog(obj45, ns.GetHost()) +} +func ProtectTheKing() { + LetterBoxOff() + ns.ObjectGroupOn(gvar70) + ns.Frozen(ns.GetHost(), false) + ns.EnchantOff(obj45, ns.ENCHANT_INVULNERABLE) + ns.ClearOwner(obj45) + ns.Frozen(obj45, false) + ns.ObjectOn(obj46) + ns.ObjectOn(obj47) + ns.ObjectOn(obj48) + ns.AggressionLevel(obj45, 0.5) + ns.MoveObject(obj46, ns.GetWaypointX(wp65), ns.GetWaypointY(wp65)) + ns.MoveObject(obj47, ns.GetWaypointX(wp66), ns.GetWaypointY(wp66)) + ns.MoveObject(obj48, ns.GetWaypointX(wp67), ns.GetWaypointY(wp67)) + ns.Wander(obj46) + ns.Wander(obj47) + ns.CreatureGuard(obj48, ns.GetWaypointX(wp68), ns.GetWaypointY(wp68), ns.GetWaypointX(wp64), ns.GetWaypointY(wp64), 0) +} +func KingStart() { + var v0 int + v0 = gvar24 + if v0 == gvar19 { + goto LABEL1 + } + if v0 == gvar20 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con05:OgreTalk07") + ns.LookAtObject(obj45, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj45) + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con05:OgreTalk08") + goto LABEL3 +LABEL3: + return +} +func KingEnd() { + var v0 int + v0 = gvar24 + if v0 == gvar19 { + goto LABEL1 + } + if v0 == gvar20 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar24 = gvar20 + ns.StartDialog(obj45, ns.GetHost()) + goto LABEL3 +LABEL2: + ns.CancelDialog(obj45) + ProtectTheKing() + ns.CreatureGuard(obj45, ns.GetWaypointX(wp64), ns.GetWaypointY(wp64), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 500) + goto LABEL3 +LABEL3: + return +} +func CaptainStart() { + var v0 int + v0 = gvar21 + if v0 == gvar12 { + goto LABEL1 + } + if v0 == gvar13 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj37, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj37) + ns.TellStory(ns.SwordsmanHurt, "War05B.scr:CaptainWaiting") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj37, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj37) + ns.TellStory(ns.SwordsmanHurt, "War05B.scr:CaptainSuccess3") + goto LABEL3 +LABEL3: + return +} +func CaptainEnd() { + var v0 int + v0 = gvar21 + if v0 == gvar12 { + goto LABEL1 + } + if v0 == gvar13 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + goto LABEL3 +LABEL2: + ns.JournalEdit(ns.GetHost(), "War05Quest4", 4) + ns.CancelDialog(obj37) + gvar23 = gvar18 + ns.SetDialog(obj38, ns.NORMAL, IngridStart, IngridEnd) + ns.StartDialog(obj38, ns.GetHost()) + goto LABEL3 +LABEL3: + return +} +func LetterBoxOn() { + ns.WideScreen(true) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func PlayerDeath() { + ns.DeathScreen(5) +} +func MaidenStart() { + var v0 int + v0 = gvar22 + if v0 == gvar14 { + goto LABEL1 + } + if v0 == gvar15 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War05B.scr:MaidenFollowing") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War05B.scr:MaidenRescued") + goto LABEL3 +LABEL3: + return +} +func MaidenEnd() { + var v0 int + v0 = gvar22 + if v0 == gvar14 { + goto LABEL1 + } + if v0 == gvar15 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func RescueMaidens() { + ns.ObjectOff(obj34) + ns.SetQuestStatus(1, "ChicksSaved") + LetterBoxOn() + ns.Frozen(ns.GetHost(), true) + ns.CreatureFollow(obj30, ns.GetHost()) + ns.CreatureFollow(obj31, ns.GetHost()) + ns.CreatureFollow(obj32, ns.GetHost()) + ns.CreatureFollow(obj33, ns.GetHost()) + ns.CreatureFollow(obj29, ns.GetHost()) + ns.SetDialog(obj29, ns.NORMAL, SisterStart, SisterEnd) + ns.StoryPic(obj29, "GlyndaPic") + ns.LookAtObject(obj29, ns.GetHost()) + ns.StartDialog(obj29, ns.GetHost()) + ns.StoryPic(obj30, "MaidenPic") + ns.StoryPic(obj31, "MaidenPic2") + ns.StoryPic(obj32, "MaidenPic3") + ns.StoryPic(obj33, "MaidenPic4") +} +func SisterStart() { + var v0 int + v0 = gvar23 + if v0 == gvar16 { + goto LABEL1 + } + if v0 == gvar17 { + goto LABEL2 + } + if v0 == gvar18 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj29, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj29) + ns.TellStory(ns.SwordsmanHurt, "War05B.scr:SisterFreed") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj29, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj29) + ns.TellStory(ns.SwordsmanHurt, "War05B.scr:SisterFollowing3") + goto LABEL4 +LABEL3: + ns.LookAtObject(obj29, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj29) + ns.TellStory(ns.SwordsmanHurt, "War05B.scr:SisterIdle") + goto LABEL4 +LABEL4: + return +} +func SisterEnd() { + var v0 int + v0 = gvar23 + if v0 == gvar16 { + goto LABEL1 + } + if v0 == gvar17 { + goto LABEL2 + } + if v0 == gvar18 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) + ns.BecomePet(obj30) + ns.BecomePet(obj31) + ns.BecomePet(obj32) + ns.BecomePet(obj33) + ns.BecomePet(obj29) + MoveNPCs() + gvar23 = gvar17 + ns.SetQuestStatus(1, "MaidensRescued") + ns.CancelDialog(obj29) + goto LABEL4 +LABEL2: + goto LABEL4 +LABEL3: + ns.SetDialog(obj38, ns.NORMAL, IngridStart, IngridEnd) + ns.StartDialog(obj38, ns.GetHost()) + goto LABEL4 +LABEL4: + return +} +func MoveNPCs() { + ns.MoveObject(obj37, ns.GetWaypointX(wp53), ns.GetWaypointY(wp53)) + ns.CreatureGuard(obj37, ns.GetWaypointX(wp53), ns.GetWaypointY(wp53), ns.GetWaypointX(wp57), ns.GetWaypointY(wp57), 0) + ns.MoveObject(obj38, ns.GetWaypointX(wp63), ns.GetWaypointY(wp63)) + ns.CreatureGuard(obj38, ns.GetWaypointX(wp63), ns.GetWaypointY(wp63), ns.GetWaypointX(wp57), ns.GetWaypointY(wp57), 0) + ns.MoveObject(obj41, ns.GetWaypointX(wp54), ns.GetWaypointY(wp54)) + ns.CreatureGuard(obj41, ns.GetWaypointX(wp54), ns.GetWaypointY(wp54), ns.GetWaypointX(wp56), ns.GetWaypointY(wp56), 0) + ns.MoveObject(obj42, ns.GetWaypointX(wp55), ns.GetWaypointY(wp55)) + ns.CreatureGuard(obj42, ns.GetWaypointX(wp55), ns.GetWaypointY(wp55), ns.GetWaypointX(wp56), ns.GetWaypointY(wp56), 0) +} +func FinalScene() { + LetterBoxOn() + ns.Frozen(ns.GetHost(), true) + gvar21 = gvar13 + ns.SetDialog(obj37, ns.NEXT, CaptainStart, CaptainEnd) + ns.StartDialog(obj37, ns.GetHost()) +} +func IngridStart() { + ns.LookAtObject(obj38, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj38) + ns.TellStory(ns.SwordsmanHurt, "War05B.scr:IngridReturned") +} +func IngridEnd() { + ns.Pickup(ns.GetHost(), obj40) + ns.Pickup(ns.GetHost(), obj39) + ns.CancelDialog(obj38) + MissionComplete() +} +func MissionComplete() { + ns.GiveXp(ns.GetHost(), 1000) + ns.Blind() + ns.FrameTimer(45, Victory) +} +func Victory() { + ns.Frozen(ns.GetHost(), false) + LetterBoxOff() + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp69), ns.GetWaypointY(wp69)) +} +func MaidenDeath() { + ns.PrintToAll("War05B.scr:MaidenDeath") + ns.DeathScreen(5) +} +func MapInitialize() { + obj6 = ns.Object("MainGate1") + obj7 = ns.Object("MainGate2") + obj8 = ns.Object("MainGateSwitch") + obj43 = ns.Object("TownGate1") + obj44 = ns.Object("TownGate2") + obj29 = ns.Object("W5Sister") + obj30 = ns.Object("W5Maiden1") + obj31 = ns.Object("W5Maiden2") + obj32 = ns.Object("W5Maiden3") + obj33 = ns.Object("W5Maiden4") + obj34 = ns.Object("SetMaidenDialogTrigger") + obj35 = ns.Object("CellDoor") + obj36 = ns.Object("CellDoorSwitch") + obj41 = ns.Object("Soldier1") + obj42 = ns.Object("Soldier2") + obj37 = ns.Object("W5Captain") + obj38 = ns.Object("W5Ingrid") + obj39 = ns.Object("PotionGift") + obj40 = ns.Object("GoldGift") + obj45 = ns.Object("OgreKing") + obj49 = ns.Object("CallForGuardsTrigger") + obj4 = ns.Object("KeyElevator") + obj46 = ns.Object("Guard1") + obj47 = ns.Object("Guard2") + obj48 = ns.Object("Guard3") + obj9 = ns.Object("CageGuard1") + obj10 = ns.Object("CageGuard2") + gvar50 = ns.ObjectGroup("KingTriggerGroup") + gvar51 = ns.ObjectGroup("CaveEnemies") + gvar70 = ns.ObjectGroup("WarlordOgres") + gvar52 = ns.WallGroup("LordSafetyWalls") + gvar5 = ns.WallGroup("KeyProtectWalls") + wp64 = ns.Waypoint("OgreKingWaypoint") + wp53 = ns.Waypoint("CaptainWP") + wp54 = ns.Waypoint("Soldier1WP") + wp55 = ns.Waypoint("Soldier2WP") + wp56 = ns.Waypoint("SoldierLook") + wp57 = ns.Waypoint("FaceWP") + wp58 = ns.Waypoint("WP1") + wp59 = ns.Waypoint("WP2") + wp60 = ns.Waypoint("WP3") + wp61 = ns.Waypoint("WP4") + wp62 = ns.Waypoint("SisterWP") + wp63 = ns.Waypoint("IngridWP") + wp65 = ns.Waypoint("Guard1WP") + wp66 = ns.Waypoint("Guard2WP") + wp67 = ns.Waypoint("Guard3WP") + wp68 = ns.Waypoint("Guard3SpotWP") + wp69 = ns.Waypoint("MapExit") + wp11 = ns.Waypoint("PlayerSounds") + ns.StoryPic(obj37, "AirshipCaptainPic") + ns.SetDialog(obj37, ns.NORMAL, CaptainStart, CaptainEnd) + ns.StoryPic(obj38, "IngridPic") + ns.LockDoor(obj35) + ns.LockDoor(obj6) + ns.LockDoor(obj7) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func Activate() { + flag26 = true + ns.ObjectGroupOff(gvar50) + ns.ObjectOn(obj49) + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar70) + ns.FrameTimer(1, LetterBoxOn) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar52) + ns.NoWallSound(false) + ns.Move(obj45, wp64) +} +func PummelPlayer() { + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +} +func MapEntry() { + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.Music(7, 100) + if ns.GetQuestStatus("MaidensRescued") != 1 { + goto LABEL1 + } + obj30 = ns.Object("War05B:W5Maiden1") + obj31 = ns.Object("War05B:W5Maiden2") + obj32 = ns.Object("War05B:W5Maiden3") + obj33 = ns.Object("War05B:W5Maiden4") + obj29 = ns.Object("War05B:W5Sister") + ns.SetCallback(obj30, 5, MaidenDeath) + ns.SetCallback(obj31, 5, MaidenDeath) + ns.SetCallback(obj32, 5, MaidenDeath) + ns.SetCallback(obj33, 5, MaidenDeath) + ns.SetCallback(obj29, 5, MaidenDeath) +LABEL1: + return +} +func FadeOut() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.Blind() +} +func UnlockCellDoor() { + ns.ObjectOff(obj36) + ns.UnlockDoor(obj35) + ns.PrintToAll("War05B.scr:OgreCageUnlocked") +} +func PlayerLeft() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag28 = false +LABEL1: + return +} +func CheckRescue() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag28 = true + if ns.GetQuestStatus("MaidensRescued") != 1 { + goto LABEL1 + } + ns.CancelDialog(obj29) + ns.Enchant(obj30, ns.ENCHANT_INVULNERABLE, 0) + ns.Enchant(obj31, ns.ENCHANT_INVULNERABLE, 0) + ns.Enchant(obj32, ns.ENCHANT_INVULNERABLE, 0) + ns.Enchant(obj33, ns.ENCHANT_INVULNERABLE, 0) + ns.Enchant(obj29, ns.ENCHANT_INVULNERABLE, 0) + FinalScene() +LABEL1: + return +} +func CheckRescue2() { + if !ns.IsCaller(obj30) { + goto LABEL1 + } + ns.BecomeEnemy(ns.GetCaller()) + ns.CreatureGuard(ns.GetCaller(), ns.GetWaypointX(wp58), ns.GetWaypointY(wp58), ns.GetWaypointX(wp57), ns.GetWaypointY(wp57), 0) + ns.CancelDialog(obj30) + ivar25 += 1 +LABEL1: + if !ns.IsCaller(obj31) { + goto LABEL2 + } + ns.BecomeEnemy(ns.GetCaller()) + ns.CreatureGuard(ns.GetCaller(), ns.GetWaypointX(wp59), ns.GetWaypointY(wp59), ns.GetWaypointX(wp57), ns.GetWaypointY(wp57), 0) + ns.CancelDialog(obj31) + ivar25 += 1 +LABEL2: + if !ns.IsCaller(obj32) { + goto LABEL3 + } + ns.BecomeEnemy(ns.GetCaller()) + ns.CreatureGuard(ns.GetCaller(), ns.GetWaypointX(wp60), ns.GetWaypointY(wp60), ns.GetWaypointX(wp57), ns.GetWaypointY(wp57), 0) + ns.CancelDialog(obj32) + ivar25 += 1 +LABEL3: + if !ns.IsCaller(obj33) { + goto LABEL4 + } + ns.BecomeEnemy(ns.GetCaller()) + ns.CreatureGuard(ns.GetCaller(), ns.GetWaypointX(wp61), ns.GetWaypointY(wp61), ns.GetWaypointX(wp57), ns.GetWaypointY(wp57), 0) + ns.CancelDialog(obj33) + ivar25 += 1 +LABEL4: + if !ns.IsCaller(obj29) { + goto LABEL5 + } + ns.BecomeEnemy(ns.GetCaller()) + ns.CreatureGuard(ns.GetCaller(), ns.GetWaypointX(wp62), ns.GetWaypointY(wp62), ns.GetWaypointX(wp57), ns.GetWaypointY(wp57), 0) + ns.CancelDialog(obj29) + ivar25 += 1 +LABEL5: + r26 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r26 { + goto LABEL6 + } + ns.GoBackHome(ns.GetCaller()) +LABEL6: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war05c/dummy_test.go b/examples/war05c/dummy_test.go new file mode 100644 index 0000000..3f6da13 --- /dev/null +++ b/examples/war05c/dummy_test.go @@ -0,0 +1,6 @@ +package war05c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war05c/war05c.go b/examples/war05c/war05c.go new file mode 100644 index 0000000..391a389 --- /dev/null +++ b/examples/war05c/war05c.go @@ -0,0 +1,543 @@ +package war05c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.WallGroupID + gvar5 ns.WallGroupID + gvar6 ns.WallGroupID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + wp44 ns.WaypointID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + gvar52 ns.ObjectGroupID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + gvar62 int + gvar63 ns.WallGroupID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + obj80 ns.ObjectID + obj81 ns.ObjectID + obj82 ns.ObjectID + obj83 ns.ObjectID + obj84 ns.ObjectID + obj85 ns.ObjectID + obj86 ns.ObjectID + obj87 ns.ObjectID + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + gvar100 ns.WallGroupID + wp101 ns.WaypointID + wp102 ns.WaypointID + wp103 ns.WaypointID + wp104 ns.WaypointID + wp105 ns.WaypointID + wp106 ns.WaypointID + wp107 ns.WaypointID + wp108 ns.WaypointID + wp109 ns.WaypointID + wp110 ns.WaypointID + wp111 ns.WaypointID + wp112 ns.WaypointID + wp113 ns.WaypointID + wp114 ns.WaypointID + wp115 ns.WaypointID + wp116 ns.WaypointID + wp117 ns.WaypointID + wp118 ns.WaypointID + wp119 ns.WaypointID + wp120 ns.WaypointID + wp121 ns.WaypointID + wp122 ns.WaypointID + wp123 ns.WaypointID + wp124 ns.WaypointID + gvar125 int + obj126 ns.ObjectID + obj127 ns.ObjectID + obj128 ns.ObjectID + obj129 ns.ObjectID + wp130 ns.WaypointID + wp131 ns.WaypointID + obj132 ns.ObjectID + obj133 ns.ObjectID + obj134 ns.ObjectID + obj135 ns.ObjectID + wp136 ns.WaypointID + wp137 ns.WaypointID +) + +func DisableElevators() { + ns.ObjectOff(obj24) + ns.ObjectOff(obj25) + ns.ObjectOff(obj26) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + ns.ObjectOff(obj29) +} +func EnableSkeletons() { + ns.AggressionLevel(obj30, 0.83) + ns.AggressionLevel(obj31, 0.83) + ns.AggressionLevel(obj32, 0.83) + ns.AggressionLevel(obj33, 0.83) + ns.AggressionLevel(obj34, 0.83) + ns.AggressionLevel(obj35, 0.83) +} +func BreakWalls1() { + ns.WallGroupOpen(gvar4) +} +func EnableElevators1() { + ns.ObjectOn(obj24) + ns.ObjectOn(obj25) + ns.ObjectOn(obj26) + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) + ns.ObjectOn(obj29) + ns.FrameTimer(20, SkeletonGoal) + EnableSkeletons() +} +func SkeletonGoal() { + ns.Move(obj30, wp51) + ns.Move(obj31, wp51) + ns.Move(obj32, wp51) + ns.Move(obj33, wp51) + ns.Move(obj34, wp51) + ns.Move(obj35, wp51) +} +func EndTrap1() { + ns.Move(obj9, wp41) + ns.Move(obj10, wp42) + ns.Move(obj11, wp43) + ns.Move(obj12, wp44) + ns.ObjectOff(obj36) + ns.AudioEvent(ns.EarthRumbleMinor, wp37) + ns.AudioEvent(ns.SecretWallSecret, wp37) +} +func OpenGates() { + ns.WallOpen(ns.Wall(96, 208)) + ns.WallOpen(ns.Wall(95, 209)) + ns.WallOpen(ns.Wall(94, 210)) +} +func CloseBlocks() { + ns.Move(obj7, wp45) + ns.Move(obj8, wp46) + ns.AudioEvent(ns.BoulderMove, wp38) + ns.AudioEvent(ns.EarthRumbleMinor, wp38) + ns.AudioEvent(ns.SecretWallOpen, wp38) + ns.AudioEvent(ns.StoneBlockMove, wp38) +} +func OpenBlocks() { + ns.ObjectOff(ns.GetTrigger()) + ns.Move(obj7, wp39) + ns.Move(obj8, wp40) + ns.AudioEvent(ns.BoulderMove, wp38) + ns.AudioEvent(ns.EarthRumbleMinor, wp38) + ns.AudioEvent(ns.SecretWallOpen, wp38) + ns.AudioEvent(ns.StoneBlockMove, wp38) +} +func Trap1() { + ns.ObjectOff(obj13) + ns.ObjectOff(obj14) + ns.ObjectOff(obj15) + ns.ObjectOff(obj16) + ns.ObjectOff(obj17) + ns.Move(obj9, wp47) + ns.Move(obj10, wp48) + ns.Move(obj11, wp49) + ns.Move(obj12, wp50) + ns.AudioEvent(ns.EarthRumbleMajor, wp50) + ns.SecondTimer(1, BreakWalls1) + ns.SecondTimer(2, EnableElevators1) + ns.Music(27, 100) +} +func CloseBlocks2() { + ns.Move(obj7, wp45) + ns.Move(obj8, wp46) + ns.Move(obj9, wp47) + ns.Move(obj10, wp48) +} +func LockCellDoors() { + ns.LockDoor(obj73) + ns.LockDoor(obj74) + ns.LockDoor(obj75) + ns.LockDoor(obj76) + ns.LockDoor(obj77) + ns.LockDoor(obj78) + ns.LockDoor(obj79) + ns.LockDoor(obj80) + ns.LockDoor(obj81) + ns.LockDoor(obj82) + ns.LockDoor(obj83) + ns.LockDoor(obj84) +} +func EnableSpikes() { + ns.Move(obj86, wp113) + ns.Move(obj87, wp114) + ns.Move(obj88, wp115) + ns.Move(obj89, wp116) + ns.Move(obj90, wp117) + ns.Move(obj91, wp118) + ns.Move(obj92, wp119) + ns.Move(obj93, wp120) + ns.Move(obj94, wp121) + ns.Move(obj95, wp122) + ns.Move(obj96, wp123) + ns.Move(obj97, wp124) + ns.FrameTimer(50, DisableSpikes) +} +func DisableSpikes() { + ns.Move(obj86, wp101) + ns.Move(obj87, wp102) + ns.Move(obj88, wp103) + ns.Move(obj89, wp104) + ns.Move(obj90, wp105) + ns.Move(obj91, wp106) + ns.Move(obj92, wp107) + ns.Move(obj93, wp108) + ns.Move(obj94, wp109) + ns.Move(obj95, wp110) + ns.Move(obj96, wp111) + ns.Move(obj97, wp112) + ns.FrameTimer(50, EnableSpikes) +} +func EnableGears() { + ns.ObjectOn(obj64) + ns.ObjectOn(obj65) + ns.SecondTimer(2, DisableGears) +} +func DisableGears() { + ns.ObjectOff(obj64) + ns.ObjectOff(obj65) +} +func KillSkeleton7() { + ns.Damage(obj72, 0, 1000, 0) +} +func MaidenDeath() { + ns.PrintToAll("War05B.scr:MaidenDeath") + ns.DeathScreen(5) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func PlayerDeath() { + ns.PrintToAll("War05A.scr:PlayerDeath") + ns.Blind() + ns.FrameTimer(30, ChapterFail2) +} +func SpikeNoise1() { + ns.AudioEvent(ns.EarthRumbleMajor, wp122) + ns.AudioEvent(ns.EarthRumbleMajor, wp116) + ns.FrameTimer(60, SpikeNoise1) +} +func MapInitialize() { + wp136 = ns.Waypoint("Secret01WP") + wp137 = ns.Waypoint("Secret02WP") + gvar52 = ns.ObjectGroup("BatEntryGroup") + obj58 = ns.Object("Bear1") + obj98 = ns.Object("Ogre1") + obj99 = ns.Object("Ogre2") + gvar63 = ns.WallGroup("ScorpionWallGroup") + obj7 = ns.Object("Block1") + obj8 = ns.Object("Block2") + obj9 = ns.Object("Block3") + obj10 = ns.Object("Block4") + obj11 = ns.Object("Block5") + obj12 = ns.Object("Block6") + obj18 = ns.Object("BlockMover1") + obj19 = ns.Object("BlockMover2") + obj20 = ns.Object("BlockMover3") + obj21 = ns.Object("BlockMover4") + obj22 = ns.Object("BlockMover5") + obj23 = ns.Object("BlockMover6") + obj132 = ns.Object("SilverKeyTrigger1") + obj133 = ns.Object("SilverKeyTrigger2") + obj134 = ns.Object("SilverKeyTrigger3") + obj135 = ns.Object("SilverKeyTrigger4") + gvar100 = ns.WallGroup("SilverKeyWallGroup") + obj126 = ns.Object("Grunt1") + obj127 = ns.Object("Grunt2") + obj128 = ns.Object("Grunt3") + obj129 = ns.Object("Grunt4") + gvar4 = ns.WallGroup("AmbushWallGroup") + obj66 = ns.Object("Pit1") + obj67 = ns.Object("Pit2") + obj68 = ns.Object("Pit3") + obj69 = ns.Object("Pit4") + obj70 = ns.Object("Pit5") + obj71 = ns.Object("Pit6") + obj24 = ns.Object("Elevator1") + obj25 = ns.Object("Elevator2") + obj26 = ns.Object("Elevator3") + obj27 = ns.Object("Elevator4") + obj28 = ns.Object("Elevator5") + obj29 = ns.Object("Elevator6") + obj30 = ns.Object("Skeleton1") + obj31 = ns.Object("Skeleton2") + obj32 = ns.Object("Skeleton3") + obj33 = ns.Object("Skeleton4") + obj34 = ns.Object("Skeleton5") + obj35 = ns.Object("Skeleton6") + obj72 = ns.Object("Skeleton7") + obj36 = ns.Object("EndTrapTrigger") + obj64 = ns.Object("Gear1") + obj65 = ns.Object("Gear2") + obj13 = ns.Object("Plate1") + obj14 = ns.Object("Plate2") + obj15 = ns.Object("Plate3") + obj16 = ns.Object("Plate4") + obj17 = ns.Object("Plate5") + obj86 = ns.Object("Spike1") + obj87 = ns.Object("Spike2") + obj88 = ns.Object("Spike3") + obj89 = ns.Object("Spike4") + obj90 = ns.Object("Spike5") + obj91 = ns.Object("Spike6") + obj92 = ns.Object("Spike7") + obj93 = ns.Object("Spike8") + obj94 = ns.Object("Spike9") + obj95 = ns.Object("Spike10") + obj96 = ns.Object("Spike11") + obj97 = ns.Object("Spike12") + obj73 = ns.Object("CellDoor1") + obj74 = ns.Object("CellDoor2") + obj75 = ns.Object("CellDoor3") + obj76 = ns.Object("CellDoor4") + obj77 = ns.Object("CellDoor5") + obj78 = ns.Object("CellDoor6") + obj79 = ns.Object("CellDoor7") + obj80 = ns.Object("CellDoor8") + obj81 = ns.Object("CellDoor9") + obj82 = ns.Object("CellDoor10") + obj83 = ns.Object("CellDoor11") + obj84 = ns.Object("CellDoor12") + obj85 = ns.Object("CellLever") + wp39 = ns.Waypoint("BlockOpen1") + wp45 = ns.Waypoint("BlockClosed1") + wp40 = ns.Waypoint("BlockOpen2") + wp46 = ns.Waypoint("BlockClosed2") + wp41 = ns.Waypoint("BlockOpen3") + wp47 = ns.Waypoint("BlockClosed3") + wp42 = ns.Waypoint("BlockOpen4") + wp48 = ns.Waypoint("BlockClosed4") + wp43 = ns.Waypoint("BlockOpen5") + wp49 = ns.Waypoint("BlockClosed5") + wp44 = ns.Waypoint("BlockOpen6") + wp50 = ns.Waypoint("BlockClosed6") + wp130 = ns.Waypoint("Gates1WP") + wp131 = ns.Waypoint("Gates2WP") + gvar5 = ns.WallGroup("Gates1") + gvar6 = ns.WallGroup("Gates2") + wp38 = ns.Waypoint("BlockAudio1WP") + wp101 = ns.Waypoint("Spike1Open") + wp102 = ns.Waypoint("Spike2Open") + wp103 = ns.Waypoint("Spike3Open") + wp104 = ns.Waypoint("Spike4Open") + wp105 = ns.Waypoint("Spike5Open") + wp106 = ns.Waypoint("Spike6Open") + wp107 = ns.Waypoint("Spike7Open") + wp108 = ns.Waypoint("Spike8Open") + wp109 = ns.Waypoint("Spike9Open") + wp110 = ns.Waypoint("Spike10Open") + wp111 = ns.Waypoint("Spike11Open") + wp112 = ns.Waypoint("Spike12Open") + wp113 = ns.Waypoint("Spike1Closed") + wp114 = ns.Waypoint("Spike2Closed") + wp115 = ns.Waypoint("Spike3Closed") + wp116 = ns.Waypoint("Spike4Closed") + wp117 = ns.Waypoint("Spike5Closed") + wp118 = ns.Waypoint("Spike6Closed") + wp119 = ns.Waypoint("Spike7Closed") + wp120 = ns.Waypoint("Spike8Closed") + wp121 = ns.Waypoint("Spike9Closed") + wp122 = ns.Waypoint("Spike10Closed") + wp123 = ns.Waypoint("Spike11Closed") + wp124 = ns.Waypoint("Spike12Closed") + wp51 = ns.Waypoint("SkeletonGoal") + wp37 = ns.Waypoint("EndTrapAudioWP") + OpenGates() + CloseBlocks() + LockCellDoors() + KillSkeleton7() + ns.Move(obj11, wp49) + ns.Move(obj12, wp50) + EnableSpikes() +} +func BatsHostilize() { + ns.GroupAggressionLevel(gvar52, 0.83) +} +func BearHostilize() { + ns.AggressionLevel(obj58, 0.83) +} +func OgresHostilize() { + ns.AggressionLevel(obj98, 0.83) + ns.AggressionLevel(obj99, 0.83) +} +func DestroyWalls() { + ns.WallGroupBreak(gvar63) + ns.Attack(obj59, ns.GetHost()) + ns.Attack(obj60, ns.GetHost()) + ns.Attack(obj61, ns.GetHost()) +} +func OpenCellDoors() { + ns.UnlockDoor(obj73) + ns.UnlockDoor(obj74) + ns.UnlockDoor(obj75) + ns.UnlockDoor(obj76) + ns.UnlockDoor(obj77) + ns.UnlockDoor(obj78) + ns.UnlockDoor(obj79) + ns.UnlockDoor(obj80) + ns.UnlockDoor(obj81) + ns.UnlockDoor(obj82) + ns.UnlockDoor(obj83) + ns.UnlockDoor(obj84) + ns.ObjectOff(obj85) + EnableGears() +} +func ToggleGates1() { + ns.AudioEvent(ns.FireBallExplode, wp130) + ns.WallGroupOpen(gvar5) +} +func ToggleGates2() { + ns.AudioEvent(ns.FireBallExplode, wp131) + ns.WallGroupOpen(gvar6) +} +func ChapterFail2() { + ns.EnchantOff(ns.GetHost(), ns.ENCHANT_INVULNERABLE) + ns.DeathScreen(5) +} +func SilverKeyTrap() { + ns.ObjectOff(obj132) + ns.ObjectOff(obj133) + ns.ObjectOff(obj134) + ns.ObjectOff(obj135) + ns.WallGroupBreak(gvar100) + ns.AggressionLevel(obj126, 0.83) + ns.AggressionLevel(obj127, 0.83) + ns.AggressionLevel(obj128, 0.83) + ns.AggressionLevel(obj129, 0.83) +} +func MapEntry() { + ns.UnBlind() + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) + if ns.GetQuestStatus("MaidensRescued") != 1 { + goto LABEL1 + } + obj53 = ns.Object("War05B:W5Maiden1") + obj54 = ns.Object("War05B:W5Maiden2") + obj55 = ns.Object("War05B:W5Maiden3") + obj56 = ns.Object("War05B:W5Maiden4") + obj57 = ns.Object("War05B:W5Sister") + ns.SetCallback(obj53, 5, MaidenDeath) + ns.SetCallback(obj54, 5, MaidenDeath) + ns.SetCallback(obj55, 5, MaidenDeath) + ns.SetCallback(obj56, 5, MaidenDeath) + ns.SetCallback(obj57, 5, MaidenDeath) +LABEL1: + return +} +func PlaySubMusic() { + ns.Music(20, 100) +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func Secret01() { + ns.AudioEvent(ns.SecretFound, wp136) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func Secret02() { + ns.AudioEvent(ns.SecretFound, wp137) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war06a/dummy_test.go b/examples/war06a/dummy_test.go new file mode 100644 index 0000000..950cb62 --- /dev/null +++ b/examples/war06a/dummy_test.go @@ -0,0 +1,6 @@ +package war06a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war06a/war06a.go b/examples/war06a/war06a.go new file mode 100644 index 0000000..bcf123f --- /dev/null +++ b/examples/war06a/war06a.go @@ -0,0 +1,606 @@ +package war06a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + wp11 ns.WaypointID + gvar12 ns.ObjectGroupID + gvar13 ns.ObjectGroupID + gvar14 ns.ObjectGroupID + gvar15 ns.ObjectGroupID + flag16 bool + flag17 bool + obj18 ns.ObjectID + obj19 ns.ObjectID + gvar20 ns.WallGroupID + wp21 ns.WaypointID + flag22 bool + ivar23 int + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + gvar30 ns.ObjectGroupID + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + flag34 bool + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + gvar43 ns.ObjectGroupID + wp44 ns.WaypointID + wp45 ns.WaypointID + obj46 ns.ObjectID + ivar47 int + flag48 bool + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + wp61 ns.WaypointID + gvar62 ns.ObjectGroupID +) + +func init() { + flag16 = false + flag17 = true + flag22 = false + ivar23 = 0 + flag34 = true + flag48 = true +} +func KillTownie() { + ns.AudioEvent(ns.HumanMaleDie, wp11) + ns.MoveObject(obj4, ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.MoveObject(obj6, 4071, 1828) + ns.MoveObject(obj7, 3999, 1844) +} +func townieTalk1Start() { + ns.ObjectGroupOff(gvar15) + ns.TellStory(ns.UrchinRecognize, "War06a:TownspeopleSpeak3") +} +func townieTalk1End() { + ns.ObjectGroupOn(gvar15) + ns.CancelDialog(obj4) + ns.Delete(obj5) + ns.FrameTimer(1, KillTownie) +} +func EnableSkeletonGroup() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar13) +} +func captainVanishes() { + ns.ObjectOff(ns.GetTrigger()) + ns.Delete(obj10) + ns.Delete(obj8) + ns.Delete(obj9) + ns.ObjectGroupOn(gvar12) + EnableSkeletonGroup() +} +func GuardiansAttack() { + ns.ObjectOn(obj24) + ns.ObjectOn(obj18) + ns.AggressionLevel(obj24, 0.83) + ns.Attack(obj24, obj18) + ns.ObjectOn(obj25) + ns.ObjectOn(obj19) + ns.AggressionLevel(obj25, 0.83) + ns.Attack(obj25, obj18) + ns.ObjectOn(obj26) + ns.AggressionLevel(obj26, 0.83) + ns.Attack(obj26, obj19) + ns.AggressionLevel(obj18, 0.83) + ns.Attack(obj18, obj24) + ns.AggressionLevel(obj19, 0.83) + ns.Attack(obj19, obj26) +} +func Guardian01DialogStart() { + ns.TellStory(ns.SwordsmanHurt, "War06a:CityGuardSpeak1") +} +func Guardian01DialogEnd() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar20) + ns.NoWallSound(false) + ns.CancelDialog(obj18) + ns.BecomePet(obj18) + ns.BecomePet(obj19) + ns.CreatureFollow(obj18, ns.GetHost()) + ns.CreatureFollow(obj19, ns.GetHost()) + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.ObjectGroupOn(gvar14) + ns.ObjectGroupOn(gvar13) +} +func Zombie1Rise() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(obj24) + v1 = ns.GetObjectY(obj24) + ns.RaiseZombie(obj24) + ns.MoveWaypoint(wp21, v0, v1) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("AudioOrigin")) +} +func Zombie2Rise() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(obj25) + v1 = ns.GetObjectY(obj25) + ns.RaiseZombie(obj25) + ns.MoveWaypoint(wp21, v0, v1) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("AudioOrigin")) +} +func Zombie3Rise() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(obj26) + v1 = ns.GetObjectY(obj26) + ns.RaiseZombie(obj26) + ns.MoveWaypoint(wp21, v0, v1) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("AudioOrigin")) +} +func SetpieceZombieDie() { + ivar23 += 1 + if !(ivar23 >= 3) { + goto LABEL1 + } + ns.StoryPic(obj18, "WarriorPic") + ns.SetDialog(obj18, ns.NORMAL, Guardian01DialogStart, Guardian01DialogEnd) + ns.LookAtObject(obj18, ns.GetHost()) + ns.LookAtObject(obj19, ns.GetHost()) + ns.StartDialog(obj18, ns.GetHost()) + ns.SetCallback(obj24, 5, NullCallback) + ns.SetCallback(obj25, 5, NullCallback) + ns.SetCallback(obj26, 5, NullCallback) +LABEL1: + return +} +func SetZombieDieCallbacks() { + ns.SetCallback(obj24, 5, SetpieceZombieDie) + ns.SetCallback(obj25, 5, SetpieceZombieDie) + ns.SetCallback(obj26, 5, SetpieceZombieDie) +} +func NullCallback() { +} +func InitializeGuardianSetpiece() { + obj24 = ns.Object("SetpieceZombie01") + obj25 = ns.Object("SetpieceZombie02") + obj26 = ns.Object("SetpieceZombie03") + ns.Damage(obj24, 0, 100, 0) + ns.Damage(obj25, 0, 100, 0) + ns.Damage(obj26, 0, 100, 0) + ns.ZombieStayDown(obj24) + ns.ZombieStayDown(obj25) + ns.ZombieStayDown(obj26) + ns.FrameTimer(30, SetZombieDieCallbacks) +} +func StartGuardianSetpiece() { + if !(ns.IsCaller(ns.GetHost()) && !flag22) { + goto LABEL1 + } + flag22 = true + ns.CreatureIdle(ns.GetHost()) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(15, Zombie1Rise) + ns.FrameTimer(25, Zombie2Rise) + ns.FrameTimer(20, Zombie3Rise) + ns.FrameTimer(45, GuardiansAttack) + ns.ObjectGroupOff(gvar13) +LABEL1: + return +} +func TurnOffLights() { + ns.ObjectGroupToggle(gvar30) + ns.ObjectGroupToggle(gvar31) + ns.ObjectGroupToggle(gvar32) + ns.ObjectGroupToggle(gvar33) + ns.ObjectToggle(obj27) + ns.ObjectToggle(obj28) + ns.ObjectToggle(obj29) +} +func PlayerDeath() { + ns.DeathScreen(6) +} +func captainTalk() { + ns.StartDialog(obj10, ns.GetHost()) +} +func captainTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.ArcherRecognize, "Con01a:CaptainProd") +} +func captainTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj10, ns.NORMAL, captainTalk1Start, captainTalk1End) +} +func undeadBreakIn() { + ns.WallBreak(ns.Wall(220, 118)) + ns.WallBreak(ns.Wall(219, 119)) + ns.WallBreak(ns.Wall(220, 120)) +} +func KirikEnd1() { + ns.SetDialog(obj42, ns.NORMAL, KirikStart1, KirikEnd1) +} +func KirikStart1() { + ns.TellStory(ns.HumanMaleEatFood, "War01A.scr:Guard1Talk01") +} +func SecretRoom() { + ns.MoveWaypoint(wp44, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp44) + ns.ObjectGroupOff(gvar43) + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func InitializeTownspeople() { + obj49 = ns.Object("Townsman1") + obj50 = ns.Object("Townsman2") + obj51 = ns.Object("Townsman3") + obj52 = ns.Object("Townsman4") + obj53 = ns.Object("Townsman5") + obj54 = ns.Object("Townsman6") + obj55 = ns.Object("Townswoman1") + obj56 = ns.Object("Townswoman2") + obj57 = ns.Object("Townswoman3") + obj58 = ns.Object("Townswoman4") + obj59 = ns.Object("Townswoman5") + obj60 = ns.Object("Townswoman6") + wp61 = ns.Waypoint("TownspeopleStorage") + gvar62 = ns.ObjectGroup("Townspeople") + ns.FrameTimer(15, OwnTownspeople) +} +func NewJournalEntry() { + ns.JournalEntry(ns.GetHost(), "War6Fortress", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +} +func MapInitialize() { + obj10 = ns.Object("Captain") + obj8 = ns.Object("Basket") + obj9 = ns.Object("BasketShadow") + obj4 = ns.Object("Townie1") + obj7 = ns.Object("DeadGuyBoots") + obj6 = ns.Object("DeadGuyChain") + obj5 = ns.Object("F6Elite2") + obj35 = ns.Object("GauntletDoorR") + obj36 = ns.Object("GauntletDoorL") + obj37 = ns.Object("IxDoorR") + obj38 = ns.Object("IxDoorL") + obj18 = ns.Object("F6FireGuard10") + obj19 = ns.Object("F6FireGuard7") + obj39 = ns.Object("F6FireGuard9") + obj40 = ns.Object("F2Fire6") + obj41 = ns.Object("F2Fire8") + obj27 = ns.Object("GearLight1") + obj28 = ns.Object("GearLight2") + obj29 = ns.Object("GearLight3") + obj42 = ns.Object("Kirik") + ns.SetOwner(ns.GetHost(), obj42) + ns.SetOwner(ns.GetHost(), obj5) + gvar12 = ns.ObjectGroup("ZombieGroupA") + gvar13 = ns.ObjectGroup("SkeletonGroup01") + gvar30 = ns.ObjectGroup("StreetLamps") + gvar31 = ns.ObjectGroup("StreetLamps2") + gvar32 = ns.ObjectGroup("LightGears") + gvar33 = ns.ObjectGroup("LightGears2") + gvar43 = ns.ObjectGroup("SecretRoom2Triggers") + gvar14 = ns.ObjectGroup("EveryMonsterOnMap") + gvar15 = ns.ObjectGroup("FleemanMonsters") + wp11 = ns.Waypoint("TownieWP") + wp21 = ns.Waypoint("AudioOrigin") + wp44 = ns.Waypoint("PlayerSounds") + wp45 = ns.Waypoint("WellWP") + gvar20 = ns.WallGroup("GrdnStpcWalls") + ns.StoryPic(obj10, "AirshipCaptainPic") + ns.SetDialog(obj10, ns.NORMAL, captainTalk1Start, captainTalk1End) + ns.StoryPic(obj5, "WoundedWarriorPic") + ns.SetDialog(obj5, ns.NORMAL, townieTalk1Start, townieTalk1End) + ns.StoryPic(obj42, "Warrior4Pic") + ns.SetDialog(obj42, ns.NORMAL, KirikStart1, KirikEnd1) + ns.LockDoor(obj35) + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.LockDoor(obj38) + InitializeGuardianSetpiece() + InitializeTownspeople() + ns.StartupScreen(6) + ns.FrameTimer(15, NewJournalEntry) + ns.Music(16, 100) + ns.FrameTimer(1, captainTalk) + ns.Damage(obj4, 0, 100, 0) +} +func NoEnemys() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MonstersGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetCaller(), 0.16) + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func OwnTownspeople() { + ns.GroupSetOwner(ns.GetHost(), gvar62) + ns.StoryPic(obj18, "WarriorPic") + ns.StoryPic(obj19, "WarriorPic") + ns.StoryPic(obj39, "WarriorPic") + ns.SetDialog(obj39, ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) + ns.StoryPic(obj40, "Warrior2Pic") + ns.SetDialog(obj40, ns.NORMAL, fireKnightsTalk2Start, fireKnightsTalk2End) + ns.StoryPic(obj41, "Warrior3Pic") + ns.SetDialog(obj41, ns.NORMAL, fireKnightsTalk3Start, fireKnightsTalk3End) +} +func fireKnightsRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar47 = ns.Random(1, 3) + if ivar47 != 1 { + goto LABEL2 + } + ns.StoryPic(ns.GetTrigger(), "WarriorPic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) +LABEL2: + if ivar47 != 2 { + goto LABEL3 + } + ns.StoryPic(ns.GetTrigger(), "Warrior2Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk2Start, fireKnightsTalk2End) +LABEL3: + if ivar47 != 3 { + goto LABEL1 + } + ns.StoryPic(ns.GetTrigger(), "Warrior3Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk3Start, fireKnightsTalk3End) +LABEL1: + return +} +func fireKnightsTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.SwordsmanRecognize, "War06a:CityGuardSpeak1") +} +func fireKnightsTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.BecomePet(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsTalk2Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.SwordsmanRecognize, "War06a:CityGuardSpeak2") +} +func fireKnightsTalk2End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.BecomePet(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsTalk3Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.SwordsmanRecognize, "War06a:CityGuardSpeak3") +} +func fireKnightsTalk3End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.BecomePet(ns.GetTrigger()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsStayTalkInit() { + if !(ns.IsCaller(obj18) || ns.IsCaller(obj19) || ns.IsCaller(obj39) || ns.IsCaller(obj40) || ns.IsCaller(obj41)) { + goto LABEL1 + } + if !ns.IsVisibleTo(ns.GetCaller(), ns.GetHost()) { + goto LABEL2 + } + ns.CreatureIdle(ns.GetCaller()) + ns.BecomeEnemy(ns.GetCaller()) + ns.CreatureGuard(ns.GetCaller(), ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 150) + ns.AggressionLevel(ns.GetCaller(), 0.5) + ns.Wander(ns.GetCaller()) + if !flag48 { + goto LABEL3 + } + flag48 = false + obj46 = ns.GetCaller() + ns.SetDialog(ns.GetCaller(), ns.NORMAL, fireKnightsStayTalkStart, fireKnightsStayTalkEnd) + if !(!ns.IsTalking() && !ns.IsTrading()) { + goto LABEL3 + } + ns.StartDialog(ns.GetCaller(), ns.GetHost()) +LABEL3: + goto LABEL4 +LABEL2: + ns.AggressionLevel(ns.GetCaller(), 0.5) + ns.Wander(ns.GetCaller()) +LABEL4: + goto LABEL5 +LABEL1: + ns.AggressionLevel(ns.GetCaller(), 0.5) + ns.Wander(ns.GetCaller()) +LABEL5: + return +} +func fireKnightsStayTalkStart() { + ns.TellStory(ns.SwordsmanRecognize, "Con06:SaveDunMir06Warrior") +} +func fireKnightsStayTalkEnd() { + ns.CancelDialog(obj46) +} +func townsMenRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar47 = ns.Random(1, 3) + if ivar47 != 1 { + goto LABEL2 + } + ns.StoryPic(ns.GetTrigger(), "Townsman1Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsmenTalk1Start, townsmenTalk1End) +LABEL2: + if ivar47 != 2 { + goto LABEL3 + } + ns.StoryPic(ns.GetTrigger(), "Townsman2Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsmenTalk2Start, townsmenTalk2End) +LABEL3: + if ivar47 != 3 { + goto LABEL1 + } + ns.StoryPic(ns.GetTrigger(), "Townsman3Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsmenTalk3Start, townsmenTalk3End) +LABEL1: + return +} +func townsmenTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.UrchinRecognize, "War06a:TownspeopleSpeak1") +} +func townsmenTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) +} +func townsmenTalk2Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.UrchinRecognize, "War06a:TownspeopleSpeak2") +} +func townsmenTalk2End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) +} +func townsmenTalk3Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.UrchinRecognize, "War06a:TownspeopleSpeak3") +} +func townsmenTalk3End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) +} +func townsWomenRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar47 = ns.Random(1, 3) + if ivar47 != 1 { + goto LABEL2 + } + ns.StoryPic(ns.GetTrigger(), "MaidenPic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsWomenTalk1Start, townsWomenTalk1End) +LABEL2: + if ivar47 != 2 { + goto LABEL3 + } + ns.StoryPic(ns.GetTrigger(), "MaidenPic2") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsWomenTalk2Start, townsWomenTalk2End) +LABEL3: + if ivar47 != 3 { + goto LABEL1 + } + ns.StoryPic(ns.GetTrigger(), "MaidenPic3") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, townsWomenTalk3Start, townsWomenTalk3End) +LABEL1: + return +} +func townsWomenTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.GhostRecognize, "War06a:WomenSpeak1") +} +func townsWomenTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) +} +func townsWomenTalk2Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.GhostRecognize, "War06a:WomenSpeak1") +} +func townsWomenTalk2End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) +} +func townsWomenTalk3Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar14) + ns.TellStory(ns.GhostRecognize, "War06a:WomenSpeak1") +} +func townsWomenTalk3End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar14) +} +func leavingDunMir() { + if !(ns.IsCaller(obj49) || ns.IsCaller(obj50) || ns.IsCaller(obj51) || ns.IsCaller(obj52) || ns.IsCaller(obj53) || ns.IsCaller(obj54) || ns.IsCaller(obj55) || ns.IsCaller(obj56) || ns.IsCaller(obj57) || ns.IsCaller(obj58) || ns.IsCaller(obj59) || ns.IsCaller(obj60)) { + goto LABEL1 + } + ns.MoveObject(ns.GetCaller(), ns.GetWaypointX(wp61), ns.GetWaypointY(wp61)) + ns.ObjectOff(ns.GetCaller()) +LABEL1: + return +} +func flee() { + ns.Wander(ns.GetTrigger()) +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp45) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war06b/dummy_test.go b/examples/war06b/dummy_test.go new file mode 100644 index 0000000..096221e --- /dev/null +++ b/examples/war06b/dummy_test.go @@ -0,0 +1,6 @@ +package war06b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war06b/war06b.go b/examples/war06b/war06b.go new file mode 100644 index 0000000..e75c757 --- /dev/null +++ b/examples/war06b/war06b.go @@ -0,0 +1,874 @@ +package war06b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + flag9 bool + flag10 bool + flag11 bool + flag12 bool + flag13 bool + flag14 bool + fvar15 float32 + fvar16 float32 + ivar17 int + ivar18 int + gvar19 int + gvar20 int + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + gvar54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + gvar65 ns.ObjectGroupID + gvar66 ns.ObjectGroupID + gvar67 ns.ObjectGroupID + gvar68 ns.ObjectGroupID + gvar69 ns.ObjectGroupID + gvar70 ns.ObjectGroupID + gvar71 ns.ObjectGroupID + gvar72 ns.WallGroupID + gvar73 ns.WallGroupID + gvar74 ns.WallGroupID + gvar75 ns.WallGroupID + gvar76 ns.WallGroupID + gvar77 ns.WallGroupID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + wp90 ns.WaypointID + wp91 ns.WaypointID + flag92 bool + flag93 bool + flag94 bool + flag95 bool + ivar96 int + ivar97 int + obj98 ns.ObjectID + gvar99 int + gvar100 int + gvar101 int + gvar102 int + wp103 ns.WaypointID +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + flag9 = true + flag10 = true + flag11 = true + flag12 = true + flag13 = false + flag14 = true + ivar17 = 0 + ivar18 = 0 + gvar19 = 0 + gvar20 = gvar4 + flag92 = true + flag93 = false + flag94 = true + flag95 = false + ivar96 = 76 + ivar97 = 70 +} +func NullCallback() { +} +func fireKnightsRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ivar17 = ns.Random(1, 3) + if ivar17 != 1 { + goto LABEL2 + } + ns.StoryPic(ns.GetTrigger(), "WarriorPic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) +LABEL2: + if ivar17 != 2 { + goto LABEL3 + } + ns.StoryPic(ns.GetTrigger(), "Warrior2Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk2Start, fireKnightsTalk2End) +LABEL3: + if ivar17 != 3 { + goto LABEL1 + } + ns.StoryPic(ns.GetTrigger(), "Warrior3Pic") + ns.SetDialog(ns.GetTrigger(), ns.NORMAL, fireKnightsTalk3Start, fireKnightsTalk3End) +LABEL1: + return +} +func fireKnightsTalk1Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.SwordsmanRecognize, "War06a:CityGuardSpeak1") +} +func fireKnightsTalk1End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar67) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.BecomePet(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsTalk2Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.SwordsmanRecognize, "War06a:CityGuardSpeak2") +} +func fireKnightsTalk2End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar67) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.BecomePet(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func fireKnightsTalk3Start() { + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.SwordsmanRecognize, "War06a:CityGuardSpeak3") +} +func fireKnightsTalk3End() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar67) + ns.SetCallback(ns.GetTrigger(), 3, NullCallback) + ns.CancelDialog(ns.GetTrigger()) + ns.CreatureFollow(ns.GetTrigger(), ns.GetHost()) + ns.BecomePet(ns.GetTrigger()) + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func ownFriends() { + ns.JournalEntry(ns.GetHost(), "War6Horrendous", 2) + ns.JournalEdit(ns.GetHost(), "War6Fortress", 4) + ns.SetOwner(ns.GetHost(), obj21) + ns.SetOwner(ns.GetHost(), obj27) + ns.SetOwner(ns.GetHost(), obj28) + ns.SetOwner(ns.GetHost(), obj29) + ns.SetOwner(ns.GetHost(), obj30) + ns.StoryPic(obj31, "WarriorPic") + ns.SetDialog(obj31, ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) + ns.StoryPic(obj32, "Warrior2Pic") + ns.SetDialog(obj32, ns.NORMAL, fireKnightsTalk2Start, fireKnightsTalk2End) + ns.StoryPic(obj33, "Warrior3Pic") + ns.SetDialog(obj33, ns.NORMAL, fireKnightsTalk3Start, fireKnightsTalk3End) + ns.StoryPic(obj34, "WarriorPic") + ns.SetDialog(obj34, ns.NORMAL, fireKnightsTalk1Start, fireKnightsTalk1End) +} +func secretArea() { + ns.MoveWaypoint(wp78, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp78) + ns.GiveXp(ns.GetHost(), 500) +} +func toggleMainGates() { + if gvar19 != 0 { + goto LABEL1 + } + gvar19 = 1 + openMainGates() + goto LABEL2 +LABEL1: + gvar19 = 0 + closeMainGates() +LABEL2: + ns.AudioEvent(ns.SecretWallStoneClose, wp84) + ns.AudioEvent(ns.BoulderMove, wp84) +} +func openMainGates() { + ns.Move(obj50, wp80) + ns.Move(obj51, wp81) + ns.Move(obj52, wp82) + ns.Move(obj53, wp83) +} +func closeMainGates() { + ns.Move(obj50, wp84) + ns.Move(obj51, wp85) + ns.Move(obj52, wp86) + ns.Move(obj53, wp87) +} +func deathToDoorStops() { + ns.Delete(ns.GetCaller()) +} +func startHorrendousTalk() { + ns.LookAtObject(ns.GetHost(), obj21) + ns.StartDialog(obj21, ns.GetHost()) +} +func faceHorrendous() { + ns.LookAtObject(ns.GetTrigger(), obj21) +} +func horrendousDie() { + ns.JournalEntry(ns.GetHost(), "War6Necro", 2) + ns.JournalEdit(ns.GetHost(), "War6Horrendous", 4) + ns.JournalDelete(ns.GetHost(), "War6Fortress") + flag14 = false + ns.MoveObject(obj22, ns.GetObjectX(obj21), ns.GetObjectY(obj21)) + fvar15 = ns.GetObjectX(obj21) - 55 + fvar16 = ns.GetObjectY(obj21) + 20 + ns.MoveObject(obj21, 1161, 2794) + ns.SetDialog(gvar54, ns.NORMAL, hecubahTalk4Start, hecubahTalk4End) + ns.StartDialog(gvar54, ns.GetHost()) + ns.FrameTimer(110, horrendousDying) +} +func horrendousDying() { + ns.MoveObject(obj23, ns.GetObjectX(obj22), ns.GetObjectY(obj22)) + ns.Delete(obj22) + ns.FrameTimer(15, horrendousDropHalberd) +} +func horrendousDropHalberd() { + ns.MoveObject(obj26, ns.GetObjectX(obj23)-10, ns.GetObjectY(obj23)+5) +} +func horrendousDead() { + ns.Music(28, 100) + ns.WideScreen(false) + ns.MoveObject(obj24, ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + ns.Delete(obj23) + ns.AudioEvent(ns.DemonDie, wp90) + if gvar54 == 0 { + goto LABEL1 + } + ns.Delete(gvar54) +LABEL1: + return +} +func horrendousSpeak() { + ns.Music(0, 100) + ns.WideScreen(true) + ns.SetDialog(obj21, ns.NORMAL, horrendousTalk1Start, horrendousTalk1End) + ns.StartDialog(obj21, ns.GetHost()) +} +func horrendousTalk1Start() { + ns.ObjectGroupOn(gvar71) + ns.Frozen(ns.GetHost(), true) + ns.LockDoor(obj35) + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.GroupPauseObject(gvar67, 10) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.DemonRecognize, "War06a:BoastfulHorrendous") +} +func horrendousTalk1End() { + ns.CancelDialog(obj21) + ns.SetDialog(gvar54, ns.NEXT, hecubahTalk1Start, hecubahTalk1End) + ns.FrameTimer(30, hecubahBustIn) +} +func horrendousTalk2Start() { + ns.TellStory(ns.DemonRecognize, "War06a:HorrendousVsHec") +} +func horrendousTalk2End() { + ns.SetDialog(obj21, ns.NEXT, horrendousTalk3Start, horrendousTalk3End) + ns.FrameTimer(30, startHorrendousTalk) +} +func horrendousTalk3Start() { + ns.TellStory(ns.DemonRecognize, "War06a:ChallengingHec") +} +func horrendousTalk3End() { + ns.CancelDialog(obj21) + ns.SetDialog(gvar54, ns.NEXT, hecubahTalk2Start, hecubahTalk2End) + ns.FrameTimer(30, startHecubahTalk) +} +func horrendousTalk5Start() { + ns.LookAtObject(ns.GetHost(), obj23) + ns.TellStory(ns.DemonRecognize, "War06a:HecDefeatsHorrendous") +} +func horrendousTalk5End() { + ns.CancelDialog(obj21) + ns.SetDialog(gvar54, ns.NEXT, hecubahTalk5Start, hecubahTalk5End) + ns.FrameTimer(30, startHecubahTalk) +} +func horrendousTalk6Start() { + ns.TellStory(ns.DemonRecognize, "War06a:HorrendousPride") +} +func horrendousTalk6End() { + ns.ObjectGroupOn(gvar67) + ns.EnchantOff(ns.GetHost(), ns.ENCHANT_INVULNERABLE) + ns.CancelDialog(obj21) + horrendousDead() + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar67) + ns.AggressionLevel(obj56, 0.83) + ns.AggressionLevel(obj57, 0.83) + ns.AggressionLevel(obj58, 0.83) + ns.AggressionLevel(obj59, 0.83) + ns.AggressionLevel(obj60, 0.83) + ns.AggressionLevel(obj61, 0.83) + ns.AggressionLevel(obj62, 0.83) + ns.AggressionLevel(obj63, 0.83) + ns.AggressionLevel(obj64, 0.83) +} +func talkToHorrendous() { + ns.SetDialog(obj21, ns.NORMAL, horrendousTalk6Start, horrendousTalk6End) + ns.StartDialog(obj21, ns.GetHost()) +} +func killMusic() { + ns.Music(0, 100) +} +func startHecubahTalk() { + ns.LookAtObject(ns.GetHost(), gvar54) + ns.StartDialog(gvar54, ns.GetHost()) +} +func hecubahBustIn() { + ns.ObjectGroupOff(gvar71) + ns.ObjectGroupOn(gvar66) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar72) + ns.NoWallSound(false) + ns.Delete(obj46) + ns.Delete(obj47) + ns.Delete(obj48) + ns.Delete(obj49) + ns.FrameTimer(10, hecubahBreakIn) +} +func hecubahBreakIn() { + ns.WallGroupBreak(gvar73) + ns.Enchant(obj21, ns.ENCHANT_VILLAIN, 0) + ns.ObjectGroupOn(gvar69) + ns.AggressionLevel(gvar54, 0) + ns.AggressionLevel(obj55, 0) + ns.AggressionLevel(obj56, 0) + ns.AggressionLevel(obj57, 0) + ns.AggressionLevel(obj58, 0) + ns.AggressionLevel(obj59, 0) + ns.AggressionLevel(obj60, 0) + ns.AggressionLevel(obj61, 0) + ns.AggressionLevel(obj62, 0) + ns.AggressionLevel(obj63, 0) + ns.AggressionLevel(obj64, 0) + ns.Wander(gvar54) + ns.StartDialog(gvar54, ns.GetHost()) +} +func hecKillsEveryone() { + if !(ns.IsCaller(gvar54) || ns.IsCaller(obj55)) { + goto LABEL1 + } + ns.Music(28, 75) + ns.FrameTimer(3, hecIsKilling) +LABEL1: + return +} +func isHecKilling() { + if !flag9 { + goto LABEL1 + } + ns.FrameTimer(3, hecIsKilling) +LABEL1: + return +} +func hecIsKilling() { + var v0 int + if !flag10 { + goto LABEL1 + } + flag9 = false + ns.LookAtObject(ns.GetHost(), gvar54) + v0 = gvar20 + if v0 == gvar4 { + goto LABEL2 + } + if v0 == gvar5 { + goto LABEL3 + } + if v0 == gvar6 { + goto LABEL4 + } + if v0 == gvar7 { + goto LABEL5 + } + if v0 == gvar8 { + goto LABEL6 + } + goto LABEL7 +LABEL2: + ns.LookAtObject(gvar54, obj21) + ns.LookAtObject(ns.GetHost(), obj21) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj21), ns.GetObjectY(obj21)) + ns.Damage(obj21, 0, 1000, 0) + gvar20 = gvar5 + goto LABEL7 +LABEL3: + ns.LookAtObject(gvar54, obj27) + ns.LookAtObject(ns.GetHost(), obj27) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj27), ns.GetObjectY(obj27)) + ns.Damage(obj27, 0, 1000, 0) + gvar20 = gvar6 + goto LABEL7 +LABEL4: + ns.LookAtObject(gvar54, obj28) + ns.LookAtObject(ns.GetHost(), obj28) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj28), ns.GetObjectY(obj28)) + ns.Damage(obj28, 0, 1000, 0) + gvar20 = gvar7 + goto LABEL7 +LABEL5: + ns.LookAtObject(gvar54, obj29) + ns.LookAtObject(ns.GetHost(), obj29) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj29), ns.GetObjectY(obj29)) + ns.Damage(obj29, 0, 1000, 0) + gvar20 = gvar8 + goto LABEL7 +LABEL6: + ns.LookAtObject(gvar54, obj30) + ns.LookAtObject(ns.GetHost(), obj30) + ns.AudioEvent(ns.DeathRayCast, wp90) + ns.Effect(ns.DEATH_RAY, ns.GetObjectX(gvar54), ns.GetObjectY(gvar54), ns.GetObjectX(obj30), ns.GetObjectY(obj30)) + ns.Damage(obj30, 0, 1000, 0) + flag10 = false + goto LABEL7 +LABEL7: + ns.FrameTimer(15, hecIsKilling) +LABEL1: + ns.LookAtObject(ns.GetHost(), gvar54) +} +func hecubahTalk1Start() { + ns.TellStory(ns.GhostRecognize, "War06a:HecubahThreat") +} +func hecubahTalk1End() { + ns.CancelDialog(gvar54) + ns.SetDialog(obj21, ns.NEXT, horrendousTalk2Start, horrendousTalk2End) + ns.FrameTimer(30, startHorrendousTalk) +} +func hecubahTalk2Start() { + ns.TellStory(ns.GhostRecognize, "War06a:HecubahAccepts") +} +func hecubahTalk2End() { + ns.CancelDialog(gvar54) + ns.Enchant(ns.GetHost(), ns.ENCHANT_INVULNERABLE, 0) + ns.ObjectOn(obj38) + ns.FrameTimer(240, isHecKilling) +} +func hecubahTalk4Start() { + ns.ObjectOff(gvar54) + ns.TellStory(ns.GhostRecognize, "War06a:HecubahWins") +} +func hecubahTalk4End() { + ns.SetDialog(obj21, ns.NEXT, horrendousTalk5Start, horrendousTalk5End) + ns.FrameTimer(30, startHorrendousTalk) + ns.CancelDialog(gvar54) +} +func hecubahTalk5Start() { + ns.TellStory(ns.GhostRecognize, "War06a:HecubahToNecro") +} +func hecubahTalk5End() { + ns.CancelDialog(gvar54) + ns.ObjectOn(obj55) + ns.AggressionLevel(obj55, 0) + ns.Walk(obj55, ns.GetWaypointX(wp79), ns.GetWaypointY(wp79)) + ns.SetDialog(obj55, ns.NEXT, necromancerTalk1Start, necromancerTalk1End) + ns.FrameTimer(90, startNecromancerTalk) +} +func hecubahTalk6Start() { + ns.TellStory(ns.GhostRecognize, "War06a:HecThreatJack") +} +func hecubahTalk6End() { + ns.CancelDialog(gvar54) + ns.ObjectOn(gvar54) + ns.AggressionLevel(gvar54, 0) + ns.Walk(gvar54, 931, 3036) + ns.SetDialog(obj55, ns.NEXT, necromancerTalk2Start, necromancerTalk2End) + ns.FrameTimer(30, startNecromancerTalk) +} +func endFightMusic() { + ns.Music(27, 100) +} +func startNecromancerTalk() { + ns.LookAtObject(ns.GetHost(), obj55) + ns.StartDialog(obj55, ns.GetHost()) +} +func necromancerTalk1Start() { + ns.CreatureIdle(obj55) + ns.LookAtObject(obj55, obj21) + ns.TellStory(ns.EmberDemonRecognize, "War06a:NecroMockHorren") +} +func necromancerTalk1End() { + ns.CancelDialog(obj55) + ns.Pickup(obj55, obj26) + ns.SetDialog(gvar54, ns.NEXT, hecubahTalk6Start, hecubahTalk6End) + ns.FrameTimer(30, startHecubahTalk) +} +func necromancerTalk2Start() { + ns.TellStory(ns.EmberDemonRecognize, "War06a:NecroThreatJack") +} +func necromancerTalk2End() { + ns.CancelDialog(obj55) + ns.ObjectOn(obj55) + ns.AggressionLevel(obj55, 0) + ns.Walk(obj55, 931, 3036) + ns.FrameTimer(200, killMusic) + ns.FrameTimer(240, talkToHorrendous) +} +func getHalberd() { + ns.Pickup(ns.GetHost(), obj26) + ns.FrameTimer(8, necroDies2) +} +func FreezePlayer() { + ns.Music(20, 100) + ns.CreatureIdle(obj55) + ns.LookAtObject(ns.GetHost(), obj55) + ns.LookAtObject(obj55, ns.GetHost()) + ns.Frozen(ns.GetHost(), true) + ns.Delete(obj56) + ns.Delete(obj57) + ns.Delete(obj58) + ns.Delete(obj59) + ns.Delete(obj60) + ns.Delete(obj61) + ns.Delete(obj62) + ns.Delete(obj63) + ns.Delete(obj64) + ns.FrameTimer(15, necroSetPiece) +} +func necroSetPiece() { + ns.WideScreen(true) + ns.ObjectOff(obj55) + ns.SetDialog(obj55, ns.NORMAL, necromancerTalk3Start, necromancerTalk3End) + ns.StartDialog(obj55, ns.GetHost()) +} +func wallWalk() { + if ivar17 != 0 { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeUpLeft, wp103) +LABEL1: + if ivar17 != 1 { + goto LABEL2 + } + ns.AudioEvent(ns.SpellPhonemeUp, wp103) +LABEL2: + if ivar17 != 2 { + goto LABEL3 + } + ns.AudioEvent(ns.SpellPhonemeUpRight, wp103) +LABEL3: + if !(ivar17 < 49) { + goto LABEL4 + } + ns.WallClose(ns.Wall(ivar96, ivar97)) + ivar17 += 1 + ivar96 -= 1 + ivar97 -= 1 + ns.FrameTimer(6, wallWalk) +LABEL4: + return +} +func releasePlayer() { + ns.NoWallSound(false) + ns.CastSpellLocationLocation("SUMMON_SKELETON_LORD", ns.GetObjectX(obj55), ns.GetObjectY(obj55), 1575, 1506) + ns.CastSpellLocationLocation("SUMMON_SKELETON_LORD", ns.GetObjectX(obj55), ns.GetObjectY(obj55), 1702, 1506) + ns.Frozen(ns.GetHost(), false) +} +func lowerNecroWall() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar74) +} +func necromancerTalk3Start() { + ns.GroupPauseObject(gvar67, 10) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.ZombieRecognize, "War06a:NecroAttackJack") +} +func necromancerTalk3End() { + ns.ObjectGroupOn(gvar67) + ns.CancelDialog(obj55) + ns.WideScreen(false) + ns.ObjectOn(obj55) + ns.Frozen(obj55, false) + ns.Wander(obj55) + ns.FrameTimer(10, wallWalk) + ns.FrameTimer(50, releasePlayer) + ns.FrameTimer(60, lowerNecroWall) +} +func necromancerTalk4Start() { + ns.GroupPauseObject(gvar67, 10) + ns.ObjectGroupOff(gvar67) + ns.TellStory(ns.ZombieRecognize, "War06a:NecroDies") +} +func necromancerTalk4End() { + ns.ObjectGroupOn(gvar67) + ns.CancelDialog(obj55) + ns.Frozen(obj55, false) + ns.GroupDamage(gvar68, 0, 1000, 0) + ns.FrameTimer(2, getHalberd) +} +func necroDies() { + ivar18 += 1 + flag92 = false + ns.LookAtObject(obj55, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj55) + ns.Frozen(obj55, true) + ns.MoveObject(obj26, 1310, 2900) + ns.SetDialog(obj55, ns.NORMAL, necromancerTalk4Start, necromancerTalk4End) + ns.StartDialog(obj55, ns.GetHost()) +} +func necroDies2() { + if !(ivar18 > 4) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), obj26) { + goto LABEL2 + } + ns.JournalEdit(ns.GetHost(), "War6Necro", 4) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(45, exitFade) + goto LABEL3 +LABEL2: + ns.FrameTimer(3, necroDies2) +LABEL3: + goto LABEL4 +LABEL1: + ns.FrameTimer(3, necroDies2) +LABEL4: + return +} +func exitFade() { + ns.Blind() + ns.FrameTimer(60, exitTile) +} +func exitTile() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), 5394, 2955) +} +func MapInitialize() { + obj21 = ns.Object("Horrendous") + obj22 = ns.Object("Horrendous_") + obj23 = ns.Object("Horrendous__") + obj24 = ns.Object("Horrendous___") + obj25 = ns.Object("Horrendous____") + obj26 = ns.Object("OblivionHalberd") + obj27 = ns.Object("EliteGuard1") + obj28 = ns.Object("EliteGuard2") + obj29 = ns.Object("EliteGuard3") + obj30 = ns.Object("EliteGuard4") + obj31 = ns.Object("F2Fire6") + obj32 = ns.Object("F6FireGuard1") + obj33 = ns.Object("F6FireGuard4") + obj34 = ns.Object("F6Guard8") + obj35 = ns.Object("ArenaDoor1") + obj36 = ns.Object("ArenaDoor2") + obj37 = ns.Object("ArenaDoor3") + obj38 = ns.Object("KillTrigger") + ns.ObjectOff(obj38) + obj39 = ns.Object("CellDoor1") + obj40 = ns.Object("CellDoor2") + obj41 = ns.Object("CellDoor3") + obj42 = ns.Object("CellDoor4") + obj43 = ns.Object("CellDoor5") + obj44 = ns.Object("CellDoor6") + obj45 = ns.Object("CellDoor7") + obj46 = ns.Object("BreakInObject1") + obj47 = ns.Object("BreakInObject2") + obj48 = ns.Object("BreakInObject3") + obj49 = ns.Object("BreakInObject4") + gvar54 = ns.Object("Hecubah") + obj55 = ns.Object("Necromancer") + obj56 = ns.Object("UndeadWar1") + obj57 = ns.Object("UndeadWar2") + obj58 = ns.Object("UndeadWar3") + obj59 = ns.Object("UndeadWar4") + obj60 = ns.Object("SkeLord1") + obj61 = ns.Object("SkeLord2") + obj62 = ns.Object("SkeLord3") + obj63 = ns.Object("SkeLord4") + obj64 = ns.Object("SkeLord5") + obj50 = ns.Object("FG1Mover") + obj51 = ns.Object("FG2Mover") + obj52 = ns.Object("FG3Mover") + obj53 = ns.Object("FG4Mover") + gvar65 = ns.ObjectGroup("NecroGuards") + ns.ObjectGroupOff(gvar65) + gvar66 = ns.ObjectGroup("Wolves") + ns.ObjectGroupOff(gvar66) + gvar67 = ns.ObjectGroup("EveryMonsterOnMap") + gvar68 = ns.ObjectGroup("EveryMonsterOnMap2") + gvar69 = ns.ObjectGroup("PartyCrashers") + gvar70 = ns.ObjectGroup("HecBreakInObjects") + gvar71 = ns.ObjectGroup("DoorStopTriggers") + ns.ObjectGroupOff(gvar71) + gvar72 = ns.WallGroup("HecBreakIn") + gvar73 = ns.WallGroup("HecBreakDown") + gvar74 = ns.WallGroup("NecroWall") + gvar75 = ns.WallGroup("NecroExitWall") + gvar76 = ns.WallGroup("WizardCages") + gvar77 = ns.WallGroup("DeathCage") + wp78 = ns.Waypoint("PlayerSounds") + wp79 = ns.Waypoint("NecroSpotWP") + wp80 = ns.Waypoint("FG1Open") + wp81 = ns.Waypoint("FG2Open") + wp82 = ns.Waypoint("FG3Open") + wp83 = ns.Waypoint("FG4Open") + wp84 = ns.Waypoint("FG1Closed") + wp85 = ns.Waypoint("FG2Closed") + wp86 = ns.Waypoint("FG3Closed") + wp87 = ns.Waypoint("FG4Closed") + wp88 = ns.Waypoint("UpStairs") + wp89 = ns.Waypoint("DownStairs") + wp90 = ns.Waypoint("NecroNoise") + wp91 = ns.Waypoint("WellWP") + obj55 = ns.Object("Necromancer") + obj98 = ns.Object("Halberd") + wp103 = ns.Waypoint("SewerChase") + ns.StoryPic(obj55, "BlackWizardPic") + ns.StoryPic(obj21, "HorrendousPic") + ns.StoryPic(gvar54, "HecubahPic") + ns.StoryPic(obj55, "NecromancerPic") + ns.AggressionLevel(obj21, 0) + ns.AggressionLevel(obj27, 0) + ns.AggressionLevel(obj28, 0) + ns.AggressionLevel(obj29, 0) + ns.AggressionLevel(obj30, 0) + ns.ObjectGroupOff(gvar69) + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.LockDoor(obj41) + ns.LockDoor(obj42) + ns.LockDoor(obj43) + ns.LockDoor(obj44) + ns.LockDoor(obj45) + ns.FrameTimer(3, ownFriends) +} +func PlayerDeath() { + ns.DeathScreen(6) +} +func unlockCells() { + ns.UnlockDoor(obj39) + ns.UnlockDoor(obj40) + ns.UnlockDoor(obj41) + ns.UnlockDoor(obj42) + ns.UnlockDoor(obj43) + ns.UnlockDoor(obj44) + ns.UnlockDoor(obj45) +} +func lockCells() { + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.LockDoor(obj41) + ns.LockDoor(obj42) + ns.LockDoor(obj43) + ns.LockDoor(obj44) + ns.LockDoor(obj45) +} +func setNecroPosition() { + if !ns.IsCaller(obj55) { + goto LABEL1 + } + ns.Frozen(obj55, true) + ns.MoveObject(obj55, 1776, 1502) +LABEL1: + if !ns.IsCaller(gvar54) { + goto LABEL2 + } + if gvar54 == 0 { + goto LABEL2 + } + ns.Delete(gvar54) +LABEL2: + return +} +func setupNecroSetPiece() { + ns.ObjectOff(ns.GetTrigger()) + ns.PauseObject(ns.GetTrigger(), 10) + ns.FrameTimer(1, FreezePlayer) +} +func setNecroPosition2() { + if !ns.IsCaller(obj55) { + goto LABEL1 + } + ns.MoveObject(obj55, 5057, 3809) +LABEL1: + return +} +func necroGuard() { + ns.CreatureGuard(obj55, 5057, 3809, 5232, 3991, 500) + ns.AggressionLevel(obj55, 0.5) + ns.ObjectGroupOn(gvar65) +} +func necroGuardDies() { + ivar18 += 1 +} +func NecroInjured() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.RestoreHealth(obj55, 14) + if !(ns.CurrentHealth(obj55) < 50) { + goto LABEL1 + } + ns.RestoreHealth(obj55, 50) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp91) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war07a/dummy_test.go b/examples/war07a/dummy_test.go new file mode 100644 index 0000000..8d08ccf --- /dev/null +++ b/examples/war07a/dummy_test.go @@ -0,0 +1,6 @@ +package war07a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war07a/war07a.go b/examples/war07a/war07a.go new file mode 100644 index 0000000..aaae57b --- /dev/null +++ b/examples/war07a/war07a.go @@ -0,0 +1,2517 @@ +package war07a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + wp4 ns.WaypointID + obj5 [100]ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + gvar53 ns.ObjectGroupID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + gvar63 ns.WallGroupID + gvar64 ns.WallGroupID + flag65 bool + flag66 bool + flag67 bool + flag68 bool + flag69 bool + flag70 bool + flag71 bool + flag72 bool + flag73 bool + flag74 bool + flag75 bool + flag76 bool + flag77 bool + flag78 bool + flag79 bool + flag80 bool + flag81 bool + flag82 bool + flag83 bool + flag84 bool + flag85 bool + flag86 bool + flag87 bool + flag88 bool + flag89 bool + flag90 bool + flag91 bool + flag92 bool + flag93 bool + gvar94 int + gvar95 int + gvar96 int + gvar97 int + gvar98 int + gvar99 int + gvar100 int + gvar101 int + gvar102 int + ivar103 int + gvar104 int + ivar105 int + ivar106 int + ivar107 int + gvar108 int + gvar109 int + fvar110 float32 + fvar111 float32 + fvar112 float32 + fvar113 float32 + fvar114 float32 + fvar115 float32 + fvar116 float32 + fvar117 float32 + gvar118 int + gvar119 int + gvar120 int + gvar121 int + gvar122 int + gvar123 int + gvar124 int + gvar125 int + gvar126 int + gvar127 int + gvar128 int + gvar129 int + gvar130 int + wp131 ns.WaypointID + wp132 ns.WaypointID + wp133 ns.WaypointID + gvar134 ns.WaypointGroupID + gvar135 ns.WaypointGroupID + wp136 ns.WaypointID + wp137 ns.WaypointID + wp138 ns.WaypointID + wp139 ns.WaypointID + wp140 ns.WaypointID + wp141 ns.WaypointID + gvar142 int + gvar143 int + gvar144 int + gvar145 int + gvar146 int + gvar147 int + gvar148 int + gvar149 int + gvar150 int + gvar151 int + ivar152 int + ivar153 int + ivar154 int + flag155 bool + gvar156 int + flag157 bool + flag158 bool + flag159 bool + flag160 bool + flag161 bool + flag162 bool +) + +func init() { + flag65 = false + flag66 = false + flag67 = false + flag68 = false + flag69 = false + flag70 = false + flag71 = false + flag72 = false + flag73 = false + flag74 = false + flag75 = false + flag76 = false + flag77 = false + flag78 = false + flag79 = false + flag80 = false + flag81 = false + flag82 = false + flag83 = false + flag84 = false + flag85 = false + flag86 = false + flag87 = false + flag88 = false + flag89 = false + flag90 = false + flag92 = false + flag93 = false + gvar94 = 0 + gvar95 = 0 + gvar96 = 0 + gvar97 = 0 + gvar98 = 0 + gvar99 = 0 + gvar100 = 0 + gvar101 = 0 + gvar102 = 0 + ivar103 = 0 + gvar104 = 0 + ivar105 = 0 + ivar106 = 0 + gvar108 = 100 + gvar118 = 0 + gvar119 = 1 + gvar120 = 2 + gvar121 = 3 + gvar122 = 0 + gvar123 = 1 + gvar124 = 2 + gvar125 = 3 + gvar126 = 0 + gvar127 = 1 + gvar128 = 2 + gvar129 = 3 + gvar142 = 0 + gvar143 = 1 + gvar144 = 2 + gvar145 = 3 + gvar146 = 4 + gvar147 = 5 + gvar148 = gvar142 + gvar149 = 0 + gvar150 = 1 + gvar151 = gvar149 + ivar152 = 0 + ivar153 = 0 + ivar154 = 0 + flag155 = true + flag157 = false + flag158 = false + flag159 = false + flag160 = false + flag161 = false + flag162 = false + flag91 = false +} +func CreatureSetup() { + ivar107 = ns.CurrentHealth(obj38) + ivar106 = 0 + for { + if !(ivar106 < 100) { + goto LABEL1 + } + obj5[ivar106] = 0 + ivar106 += 1 + } +LABEL1: + ns.Pickup(obj22, obj59) + ns.SetOwner(ns.GetHost(), obj23) + ns.SetOwner(ns.GetHost(), obj24) + ns.SetOwner(ns.GetHost(), obj11) + ns.SetOwner(ns.GetHost(), obj6) + ns.SetOwner(ns.GetHost(), obj7) + ns.SetOwner(ns.GetHost(), obj8) + ns.SetOwner(obj22, obj33) + ns.SetOwner(obj22, obj28) + ns.SetOwner(obj22, obj26) + ns.SetOwner(obj22, obj25) + ns.SetOwner(obj22, obj27) + ns.SetOwner(obj22, obj29) + ns.SetOwner(obj22, obj30) + ns.SetOwner(obj22, obj31) + ns.SetOwner(obj22, obj21) + ns.SetOwner(ns.GetHost(), obj36) + ns.Wander(obj38) + ns.CreatureGuard(obj12, ns.GetObjectX(obj12), ns.GetObjectY(obj12), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj16, ns.GetObjectX(obj16), ns.GetObjectY(obj16), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj31, ns.GetObjectX(obj31), ns.GetObjectY(obj31), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + fvar110 = ns.GetObjectX(obj14) + fvar111 = ns.GetObjectY(obj14) + fvar112 = ns.GetObjectX(obj9) + fvar113 = ns.GetObjectY(obj9) + fvar114 = ns.GetObjectX(obj12) + fvar115 = ns.GetObjectY(obj12) + fvar116 = ns.GetObjectX(obj16) + fvar117 = ns.GetObjectY(obj16) + ns.Music(17, 100) +} +func PlayerChurchEnter() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag82 = true + goto LABEL2 +LABEL1: + ns.Wander(ns.GetCaller()) +LABEL2: + return +} +func PlayerChurchExit() { + flag82 = false + if !flag81 { + goto LABEL1 + } + flag81 = false + ns.CreatureHunt(obj25) + ns.CreatureHunt(obj28) + ns.CreatureHunt(obj27) + ns.CreatureHunt(obj26) + ns.CreatureHunt(obj29) + ns.CreatureHunt(obj30) +LABEL1: + return +} +func PlayerSneakExit() { + flag82 = false +} +func DrunkRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if gvar100 != gvar118 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj31) > 0) { + goto LABEL1 + } + ns.SetDialog(obj31, ns.NORMAL, DrunkStart, DrunkEnd) + gvar100 = gvar119 + ns.CreatureFollow(obj31, ns.GetHost()) + ns.StartDialog(obj31, ns.GetHost()) +LABEL1: + if !ns.IsCaller(obj22) { + goto LABEL2 + } + if !(flag72 == false && flag68 == false) { + goto LABEL2 + } + if !(ns.CurrentHealth(obj22) > 0) { + goto LABEL2 + } + ns.CreatureFollow(obj22, ns.GetHost()) +LABEL2: + return +} +func DrunkReport() { + if !flag93 { + goto LABEL1 + } + flag93 = false + ns.Wander(obj31) +LABEL1: + return +} +func DrunkAttacks() { + var ( + v0 int + v1 int + ) + if gvar100 != gvar119 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj31) > 0) { + goto LABEL1 + } + v0 = ns.Random(1, 5) + v1 = v0 + if v1 == 1 { + goto LABEL2 + } + if v1 == 2 { + goto LABEL3 + } + if v1 == 3 { + goto LABEL4 + } + if v1 == 4 { + goto LABEL5 + } + if v1 == 5 { + goto LABEL6 + } + goto LABEL7 +LABEL2: + ns.Chat(obj31, "War07A.scr:DrunkardTaunt01") + goto LABEL7 +LABEL3: + ns.Chat(obj31, "War07A.scr:DrunkardTaunt02") + goto LABEL7 +LABEL4: + ns.Chat(obj31, "War07A.scr:DrunkardTaunt03") + goto LABEL7 +LABEL5: + ns.Chat(obj31, "War07A.scr:DrunkardTaunt04") + goto LABEL7 +LABEL6: + ns.Chat(obj31, "War07A.scr:DrunkardTaunt05") + goto LABEL7 +LABEL7: + ns.Attack(obj31, ns.GetHost()) + ns.SecondTimer(5, DrunkAttacks) +LABEL1: + return +} +func DrunkInjured() { + if flag72 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj31) > 0) { + goto LABEL2 + } + if flag74 { + goto LABEL3 + } + flag74 = true + ns.Chat(obj31, "War07A.scr:DrunkardHelp01") +LABEL3: + gvar100 = gvar120 + ns.AggressionLevel(obj22, 0.16) + ns.AggressionLevel(obj31, 0.16) + if !(ns.CurrentHealth(obj22) > 0) { + goto LABEL2 + } + ns.CreatureFollow(obj31, obj22) +LABEL2: + goto LABEL4 +LABEL1: + ns.AggressionLevel(obj31, 0.83) +LABEL4: + return +} +func DrunkDied() { + ns.DestroyEveryChat() + flag68 = true + ns.MoveObject(obj9, ns.GetWaypointX(wp137), ns.GetWaypointY(wp137)) + ns.MoveObject(obj12, ns.GetWaypointX(wp139), ns.GetWaypointY(wp139)) + ns.MoveObject(obj16, ns.GetWaypointX(wp138), ns.GetWaypointY(wp138)) + ns.MoveObject(obj14, ns.GetWaypointX(wp136), ns.GetWaypointY(wp136)) + ns.CancelDialog(obj22) + if gvar102 != gvar126 { + goto LABEL1 + } + gvar102 = gvar127 + ns.AggressionLevel(obj28, 0.16) + ns.AggressionLevel(obj27, 0.16) + ns.AggressionLevel(obj25, 0.16) + ns.AggressionLevel(obj26, 0.16) + ns.AggressionLevel(obj29, 0.16) + ns.AggressionLevel(obj30, 0.16) + goto LABEL2 +LABEL1: + gvar102 = gvar128 +LABEL2: + return +} +func DrunkStart() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj31) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:DrunkardIntro01") +} +func DrunkEnd() { + ns.Frozen(ns.GetHost(), false) + ns.CancelDialog(obj31) + ns.AggressionLevel(obj31, 0.5) + ns.Attack(obj31, ns.GetHost()) + ns.SecondTimer(3, DrunkAttacks) +} +func DrunkLoseSight() { + if !(gvar100 == gvar119 && flag72 == false && flag70 == false) { + goto LABEL1 + } + ns.AggressionLevel(obj31, 0.16) + ns.CreatureFollow(obj31, obj22) + gvar100 = gvar120 + flag74 = false +LABEL1: + return +} +func PutPeopleInJail() { + IndexPlayerInventory() + flag71 = true + ns.PrintToAll("War07A.scr:TimePass") + ns.MoveObject(ns.GetHost(), 3741, 5350) + ns.MoveObject(obj22, 3774, 5385) + ns.AggressionLevel(obj22, 0) + ns.LookAtObject(obj22, ns.GetHost()) + flag72 = true + if !(ns.CurrentHealth(obj31) > 0) { + goto LABEL1 + } + ns.AggressionLevel(obj31, 0.16) + ns.Wander(obj31) +LABEL1: + ns.UnBlind() + WardenJailCellTalk() +} +func GetRandomMobYell() { + var v0 int + ivar105 = ns.Random(1, ivar103) + v0 = ivar105 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + if v0 == 6 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + if !(flag75 == true && ns.CurrentHealth(obj25) > 0) { + goto LABEL8 + } + ns.Chat(obj25, "War07A.scr:MobYell") + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.Attack(obj25, ns.GetHost()) + ns.Attack(obj28, ns.GetHost()) + ns.Attack(obj27, ns.GetHost()) + ns.Attack(obj26, ns.GetHost()) + ns.Attack(obj29, ns.GetHost()) + ns.Attack(obj30, ns.GetHost()) + flag80 = true + goto LABEL9 +LABEL8: + if flag80 { + goto LABEL9 + } + ns.FrameTimer(1, GetRandomMobYell) +LABEL9: + goto LABEL7 +LABEL2: + if !(flag73 == true && ns.CurrentHealth(obj28) > 0) { + goto LABEL10 + } + ns.Chat(obj28, "War07A.scr:MobYell") + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.Attack(obj25, ns.GetHost()) + ns.Attack(obj28, ns.GetHost()) + ns.Attack(obj27, ns.GetHost()) + ns.Attack(obj26, ns.GetHost()) + ns.Attack(obj29, ns.GetHost()) + ns.Attack(obj30, ns.GetHost()) + flag80 = true + goto LABEL11 +LABEL10: + if flag80 { + goto LABEL11 + } + ns.FrameTimer(1, GetRandomMobYell) +LABEL11: + goto LABEL7 +LABEL3: + if !(flag76 == true && ns.CurrentHealth(obj26) > 0) { + goto LABEL12 + } + ns.Chat(obj26, "War07A.scr:MobYell") + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.Attack(obj25, ns.GetHost()) + ns.Attack(obj28, ns.GetHost()) + ns.Attack(obj27, ns.GetHost()) + ns.Attack(obj26, ns.GetHost()) + ns.Attack(obj29, ns.GetHost()) + ns.Attack(obj30, ns.GetHost()) + flag80 = true + goto LABEL13 +LABEL12: + if flag80 { + goto LABEL13 + } + ns.FrameTimer(1, GetRandomMobYell) +LABEL13: + goto LABEL7 +LABEL4: + if !(flag77 == true && ns.CurrentHealth(obj27) > 0) { + goto LABEL14 + } + ns.Chat(obj27, "War07A.scr:MobYell") + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.Attack(obj25, ns.GetHost()) + ns.Attack(obj28, ns.GetHost()) + ns.Attack(obj27, ns.GetHost()) + ns.Attack(obj26, ns.GetHost()) + ns.Attack(obj29, ns.GetHost()) + ns.Attack(obj30, ns.GetHost()) + flag80 = true + goto LABEL15 +LABEL14: + if flag80 { + goto LABEL15 + } + ns.FrameTimer(1, GetRandomMobYell) +LABEL15: + goto LABEL7 +LABEL5: + if !(flag78 == true && ns.CurrentHealth(obj29) > 0) { + goto LABEL16 + } + ns.Chat(obj29, "War07A.scr:MobYell") + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.Attack(obj25, ns.GetHost()) + ns.Attack(obj28, ns.GetHost()) + ns.Attack(obj27, ns.GetHost()) + ns.Attack(obj26, ns.GetHost()) + ns.Attack(obj29, ns.GetHost()) + ns.Attack(obj30, ns.GetHost()) + flag80 = true + goto LABEL17 +LABEL16: + if flag80 { + goto LABEL17 + } + ns.FrameTimer(1, GetRandomMobYell) +LABEL17: + goto LABEL7 +LABEL6: + if !(flag79 == true && ns.CurrentHealth(obj30) > 0) { + goto LABEL18 + } + ns.Chat(obj30, "War07A.scr:MobYell") + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.Attack(obj25, ns.GetHost()) + ns.Attack(obj28, ns.GetHost()) + ns.Attack(obj27, ns.GetHost()) + ns.Attack(obj26, ns.GetHost()) + ns.Attack(obj29, ns.GetHost()) + ns.Attack(obj30, ns.GetHost()) + flag80 = true + goto LABEL19 +LABEL18: + if flag80 { + goto LABEL19 + } + ns.FrameTimer(1, GetRandomMobYell) +LABEL19: + goto LABEL7 +LABEL7: + return +} +func AppleManRecognize() { + ns.Chat(obj32, "War07A.scr:AppleManTalk01") +} +func PlayerPit() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOn(obj52) +LABEL1: + return +} +func MaxDialogStart() { + var v0 int + v0 = gvar148 + if v0 == gvar142 { + goto LABEL1 + } + if v0 == gvar143 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War07a.scr:MaxOffer01") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MaxWaiting") + goto LABEL3 +LABEL3: + return +} +func MaxDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v0 = ns.GetAnswer(obj21) + v5 = v0 + if v5 == v4 { + goto LABEL1 + } + if v5 == v3 { + goto LABEL2 + } + if v5 == v2 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + gvar148 = gvar143 + ResetMaxDialog() + goto LABEL4 +LABEL2: + ns.SetDialog(obj21, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:TurnMaxDown") + gvar148 = gvar143 + goto LABEL4 +LABEL3: + v1 = ns.GetGold(ns.GetHost()) + if !(v1 >= 50000) { + goto LABEL5 + } + ns.SetDialog(obj21, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:HaveGoldForMax") + ns.ChangeGold(ns.GetHost(), -50000) + gvar148 = gvar147 + ns.UnlockDoor(obj41) + ns.UnlockDoor(obj42) + goto LABEL4 + goto LABEL4 +LABEL5: + ns.SetDialog(obj21, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:NoGoldForMax") + gvar148 = gvar143 + goto LABEL4 +LABEL4: + return +} +func PriestGreetingStart() { + if flag81 { + goto LABEL1 + } + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:PriestTalk01") + goto LABEL2 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:PriestTalk02") +LABEL2: + return +} +func PriestGreetingEnd() { + ns.SetDialog(obj11, ns.NORMAL, PriestGreetingStart, PriestGreetingEnd) +} +func UndertakerTalkStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:UndertakerTalk01") +} +func UndertakerTalkEnd() { + ns.SetDialog(obj33, ns.NORMAL, UndertakerTalkStart, UndertakerTalkEnd) +} +func DorianRecognize() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag83 = true + if flag82 { + goto LABEL1 + } + v0 = gvar102 + if v0 == gvar127 { + goto LABEL2 + } + if v0 == gvar128 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.CreatureFollow(obj28, ns.GetHost()) + if flag73 { + goto LABEL4 + } + ivar103 += 1 + flag73 = true +LABEL4: + if ivar103 != 3 { + goto LABEL5 + } + gvar102 = gvar128 + GetRandomMobYell() +LABEL5: + goto LABEL1 +LABEL3: + flag81 = false + ns.Attack(obj28, ns.GetHost()) + goto LABEL1 +LABEL1: + return +} +func GrunbarRecognize() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag85 = true + if flag82 { + goto LABEL1 + } + v0 = gvar102 + if v0 == gvar127 { + goto LABEL2 + } + if v0 == gvar128 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.CreatureFollow(obj27, ns.GetHost()) + if flag77 { + goto LABEL4 + } + ivar103 += 1 + flag77 = true +LABEL4: + if ivar103 != 3 { + goto LABEL5 + } + gvar102 = gvar128 + GetRandomMobYell() +LABEL5: + goto LABEL1 +LABEL3: + flag81 = false + ns.Attack(obj27, ns.GetHost()) + goto LABEL1 +LABEL1: + return +} +func JorganRecognize() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag86 = true + if flag82 { + goto LABEL1 + } + v0 = gvar102 + if v0 == gvar127 { + goto LABEL2 + } + if v0 == gvar128 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.CreatureFollow(obj26, ns.GetHost()) + if flag76 { + goto LABEL4 + } + ivar103 += 1 + flag76 = true +LABEL4: + if ivar103 != 3 { + goto LABEL5 + } + gvar102 = gvar128 + GetRandomMobYell() +LABEL5: + goto LABEL1 +LABEL3: + flag81 = false + ns.Attack(obj26, ns.GetHost()) + goto LABEL1 +LABEL1: + return +} +func AlbiRecognize() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag84 = true + if flag82 { + goto LABEL1 + } + v0 = gvar102 + if v0 == gvar127 { + goto LABEL2 + } + if v0 == gvar128 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.CreatureFollow(obj25, ns.GetHost()) + if flag75 { + goto LABEL4 + } + ivar103 += 1 + flag75 = true +LABEL4: + if ivar103 != 3 { + goto LABEL5 + } + gvar102 = gvar128 + GetRandomMobYell() +LABEL5: + goto LABEL1 +LABEL3: + flag81 = false + ns.Attack(obj25, ns.GetHost()) + goto LABEL1 +LABEL1: + return +} +func Civvy3Recognize() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag87 = true + if flag82 { + goto LABEL1 + } + v0 = gvar102 + if v0 == gvar127 { + goto LABEL2 + } + if v0 == gvar128 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.CreatureFollow(obj29, ns.GetHost()) + if flag78 { + goto LABEL4 + } + ivar103 += 1 + flag78 = true +LABEL4: + if ivar103 != 3 { + goto LABEL5 + } + gvar102 = gvar128 + GetRandomMobYell() +LABEL5: + goto LABEL1 +LABEL3: + flag81 = false + ns.Attack(obj29, ns.GetHost()) + goto LABEL1 +LABEL1: + return +} +func Civvy4Recognize() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag88 = true + if flag82 { + goto LABEL1 + } + v0 = gvar102 + if v0 == gvar127 { + goto LABEL2 + } + if v0 == gvar128 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.CreatureFollow(obj30, ns.GetHost()) + if flag79 { + goto LABEL4 + } + ivar103 += 1 + flag79 = true +LABEL4: + if ivar103 != 3 { + goto LABEL5 + } + gvar102 = gvar128 + GetRandomMobYell() +LABEL5: + goto LABEL1 +LABEL3: + flag81 = false + ns.Attack(obj30, ns.GetHost()) + goto LABEL1 +LABEL1: + return +} +func AlbiWaiting() { + if !ns.IsCaller(obj25) { + goto LABEL1 + } + if !(gvar102 != gvar126 || gvar94 == 1) { + goto LABEL1 + } + if !flag82 { + goto LABEL1 + } + flag81 = true + ns.CreatureIdle(obj25) + ns.AggressionLevel(obj25, 0.16) + ns.CreatureGuard(obj25, ns.GetObjectX(obj25), ns.GetObjectY(obj25), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func DorianWaiting() { + if !ns.IsCaller(obj28) { + goto LABEL1 + } + if !(gvar102 != gvar126 || gvar95 == 1) { + goto LABEL1 + } + if !flag82 { + goto LABEL1 + } + flag81 = true + ns.CreatureIdle(obj28) + ns.AggressionLevel(obj28, 0.16) + ns.CreatureGuard(obj28, ns.GetObjectX(obj28), ns.GetObjectY(obj28), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func GrunbarWaiting() { + if !ns.IsCaller(obj27) { + goto LABEL1 + } + if !(gvar102 != gvar126 || gvar96 == 1) { + goto LABEL1 + } + if !flag82 { + goto LABEL1 + } + flag81 = true + ns.CreatureIdle(obj27) + ns.AggressionLevel(obj27, 0.16) + ns.CreatureGuard(obj27, ns.GetObjectX(obj27), ns.GetObjectY(obj27), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func JorganWaiting() { + if !ns.IsCaller(obj26) { + goto LABEL1 + } + if !(gvar102 != gvar126 || gvar97 == 1) { + goto LABEL1 + } + if !flag82 { + goto LABEL1 + } + flag81 = true + ns.CreatureIdle(obj26) + ns.AggressionLevel(obj26, 0.16) + ns.CreatureGuard(obj26, ns.GetObjectX(obj26), ns.GetObjectY(obj26), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func Civvy3Waiting() { + if !ns.IsCaller(obj29) { + goto LABEL1 + } + if !(gvar102 != gvar126 || gvar98 == 1) { + goto LABEL1 + } + if !flag82 { + goto LABEL1 + } + flag81 = true + ns.CreatureIdle(obj29) + ns.AggressionLevel(obj29, 0.16) + ns.CreatureGuard(obj29, ns.GetObjectX(obj29), ns.GetObjectY(obj29), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func Civvy4Waiting() { + if !ns.IsCaller(obj30) { + goto LABEL1 + } + if !(gvar102 != gvar126 || gvar99 == 1) { + goto LABEL1 + } + if !flag82 { + goto LABEL1 + } + flag81 = true + ns.CreatureIdle(obj30) + ns.AggressionLevel(obj30, 0.16) + ns.CreatureGuard(obj30, ns.GetObjectX(obj30), ns.GetObjectY(obj30), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func DorianLoseSight() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag83 = false +LABEL1: + return +} +func AlbiLoseSight() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag84 = false +LABEL1: + return +} +func JorganLoseSight() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag86 = false +LABEL1: + return +} +func GrunbarLoseSight() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag85 = false +LABEL1: + return +} +func Civvy3LoseSight() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag87 = false +LABEL1: + return +} +func Civvy4LoseSight() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag88 = false +LABEL1: + return +} +func MlurghWelcomeStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MlurghTalk01") +} +func MlurghWelcomeEnd() { + ns.SetDialog(obj34, ns.NORMAL, MlurghRumorStart, MlurghRumorEnd) +} +func MlurghRumorStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MlurghTalk02") +} +func MlurghRumorEnd() { + ns.SetDialog(obj34, ns.NORMAL, MlurghRumorStart, MlurghRumorEnd) +} +func FreezePhim() { + if !ns.IsCaller(obj9) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj10, fvar112, fvar113) + ns.Frozen(obj9, true) + ns.Frozen(obj10, true) +LABEL1: + return +} +func FreezeMage() { + if !ns.IsCaller(obj12) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj13, fvar114, fvar115) + ns.Frozen(obj12, true) + ns.Frozen(obj13, true) +LABEL1: + return +} +func FreezeKin() { + if !ns.IsCaller(obj16) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj17, fvar116, fvar117) + ns.Frozen(obj16, true) + ns.Frozen(obj17, true) +LABEL1: + return +} +func FreezeBB() { + if !ns.IsCaller(obj14) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj15, fvar110, fvar111) + ns.Frozen(obj14, true) + ns.Frozen(obj15, true) +LABEL1: + return +} +func WardenRecognize() { + if !flag68 { + goto LABEL1 + } + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(obj22, 0.83) + ns.CreatureHunt(obj22) + ns.Attack(obj22, ns.GetHost()) +LABEL1: + if !(flag72 == false && flag68 == false && flag70 == false) { + goto LABEL2 + } + if !ns.IsCaller(obj31) { + goto LABEL3 + } + ns.AggressionLevel(obj22, 0.16) + ns.CreatureFollow(obj22, ns.GetHost()) +LABEL3: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL4 + } + gvar101 = gvar124 + ns.AggressionLevel(obj22, 0.16) + ns.CreatureFollow(obj22, ns.GetHost()) + ns.SetDialog(obj22, ns.YESNO, WardenArrestStart, WardenArrestEnd) + StartWardenTalk() +LABEL4: + goto LABEL5 +LABEL2: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL5 + } + if !flag72 { + goto LABEL6 + } + if flag71 { + goto LABEL7 + } + ns.Chat(obj22, "War07A.scr:WardenTalk02") + ns.AggressionLevel(obj22, 0.83) + ns.CreatureHunt(obj22) + ns.Attack(obj22, ns.GetHost()) + gvar101 = gvar125 + ns.LockDoor(obj43) +LABEL7: + if !flag71 { + goto LABEL8 + } + ns.AggressionLevel(obj22, 0.16) +LABEL8: + goto LABEL5 +LABEL6: + ns.AggressionLevel(obj22, 0.83) + ns.CreatureHunt(obj22) + ns.Attack(obj22, ns.GetHost()) +LABEL5: + return +} +func WardenArrestStart() { + ns.Frozen(obj31, true) + ns.Frozen(obj25, true) + ns.Frozen(obj28, true) + ns.Frozen(obj27, true) + ns.Frozen(obj26, true) + ns.Frozen(obj29, true) + ns.Frozen(obj30, true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(obj31) + ns.CreatureIdle(obj25) + ns.CreatureIdle(obj28) + ns.CreatureIdle(obj27) + ns.CreatureIdle(obj26) + ns.CreatureIdle(obj29) + ns.CreatureIdle(obj30) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj22) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:WardenPreArrest04") +} +func WardenArrestEnd() { + var ( + v0 int + v1 int + ) + v0 = 0 + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj31, false) + ns.Frozen(obj25, false) + ns.Frozen(obj26, false) + ns.Frozen(obj27, false) + ns.Frozen(obj28, false) + ns.Frozen(obj29, false) + ns.Frozen(obj30, false) + ns.Wander(obj25) + ns.Wander(obj28) + ns.Wander(obj27) + ns.Wander(obj26) + ns.Wander(obj29) + ns.Wander(obj30) + v0 = ns.GetAnswer(obj22) + v1 = v0 + if v1 == 0 { + goto LABEL1 + } + if v1 == 1 { + goto LABEL2 + } + if v1 == 2 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + gvar101 = gvar125 + ns.LockDoor(obj43) + ns.AggressionLevel(obj22, 0.83) + ns.AggressionLevel(obj31, 0.5) + ns.Attack(obj22, ns.GetHost()) + ns.Attack(obj31, ns.GetHost()) + ns.CreatureGuard(obj23, 3622, 5460, 3737, 5579, 0) + ns.CancelDialog(obj23) + goto LABEL4 +LABEL2: + ns.Blind() + ns.AggressionLevel(obj22, 0) + ns.AggressionLevel(obj31, 0.16) + ns.FrameTimer(60, PutPeopleInJail) + goto LABEL4 +LABEL3: + gvar101 = gvar125 + ns.LockDoor(obj43) + ns.AggressionLevel(obj22, 0.83) + ns.AggressionLevel(obj31, 0.5) + ns.Attack(obj22, ns.GetHost()) + ns.Attack(obj31, ns.GetHost()) + ns.CreatureGuard(obj23, 3622, 5460, 3737, 5579, 0) + ns.CancelDialog(obj23) + goto LABEL4 +LABEL4: + ns.CancelDialog(obj22) +} +func WardenUpsetStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:WardenTalk01") +} +func WardenUpsetEnd() { + ns.CancelDialog(obj22) + ns.Wander(obj22) + ns.FrameTimer(1, MorganWhisper) +} +func WardenJailCellTalk() { + if flag65 { + goto LABEL1 + } + ns.AggressionLevel(obj22, 0) + flag65 = true + ns.FrameTimer(60, WardenJailCellTalk) + goto LABEL2 +LABEL1: + ns.AggressionLevel(obj22, 0) + ns.SetDialog(obj22, ns.NORMAL, WardenUpsetStart, WardenUpsetEnd) + ns.LookAtObject(obj22, ns.GetHost()) + ns.StartDialog(obj22, ns.GetHost()) +LABEL2: + return +} +func WardenBack() { + ns.ObjectOn(obj22) + ns.LookAtObject(obj22, obj46) + flag71 = false + ns.AggressionLevel(obj22, 0.16) + ns.ObjectOff(obj50) +} +func WardenDied() { + if !ns.IsLocked(obj43) { + goto LABEL1 + } + ns.UnlockDoor(obj43) +LABEL1: + if !(ns.CurrentHealth(obj31) > 0) { + goto LABEL2 + } + flag93 = true + ns.GoBackHome(obj31) +LABEL2: + if flag69 { + goto LABEL3 + } + if !flag66 { + goto LABEL4 + } + ns.CreatureGuard(obj24, ns.GetObjectX(obj24), ns.GetObjectY(obj24), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetDialog(obj24, ns.NORMAL, FriendWaitStart, FriendWaitEnd) +LABEL4: + flag69 = true + ns.CancelDialog(obj22) + if !(flag84 == true || flag85 == true || flag86 == true || flag83 == true || flag87 == true || flag88 == true) { + goto LABEL3 + } + if gvar102 == gvar128 { + goto LABEL3 + } + gvar102 = gvar128 + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.MoveObject(obj9, ns.GetWaypointX(wp137), ns.GetWaypointY(wp137)) + ns.MoveObject(obj12, ns.GetWaypointX(wp139), ns.GetWaypointY(wp139)) + ns.MoveObject(obj16, ns.GetWaypointX(wp138), ns.GetWaypointY(wp138)) + ns.MoveObject(obj14, ns.GetWaypointX(wp136), ns.GetWaypointY(wp136)) +LABEL3: + return +} +func WardenMad() { + ns.Chat(obj22, "War07A.scr:WardenTalk04") +} +func StartWardenTalk() { + if flag70 { + goto LABEL1 + } + if !(ns.Distance(ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), ns.GetObjectX(obj22), ns.GetObjectY(obj22)) > 120) { + goto LABEL2 + } + ns.FrameTimer(10, StartWardenTalk) + goto LABEL1 +LABEL2: + if !ns.IsTrading() { + goto LABEL3 + } + ns.FrameTimer(10, StartWardenTalk) + goto LABEL1 +LABEL3: + if !(ns.CurrentHealth(ns.GetHost()) > 0) { + goto LABEL1 + } + flag70 = true + ns.StartDialog(obj22, ns.GetHost()) +LABEL1: + return +} +func WardenHurt() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(obj22, 0.83) + gvar101 = gvar125 + ns.CancelDialog(obj22) +LABEL1: + return +} +func LockBackDoor() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LockDoor(obj46) +LABEL1: + return +} +func MorganWhisper() { + ns.Chat(obj23, "War07A.scr:MorganTalk01") +} +func MorganHintStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MorganTalk02") +} +func MorganHintEnd() { + ns.CancelDialog(obj23) + ns.JournalEntry(ns.GetHost(), "FindTunnel", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.Walk(obj23, 3633, 5472) +} +func MorganRequestStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MorganTalk04") +} +func MorganRequestEnd() { + ns.CancelDialog(obj23) + ns.JournalEntry(ns.GetHost(), "RescueMorgan", 2) +} +func OpenEscapeWall() { + if !ns.IsCaller(obj23) { + goto LABEL1 + } + ns.WallOpen(ns.Wall(166, 220)) +LABEL1: + return +} +func MorganThanksTrigger() { + if !ns.IsCaller(obj23) { + goto LABEL1 + } + ns.CreatureGuard(obj23, ns.GetObjectX(obj23), ns.GetObjectY(obj23), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetDialog(obj23, ns.NORMAL, MorganThanksStart, MorganThanksEnd) +LABEL1: + if !flag89 { + goto LABEL2 + } + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj22, true) + ns.Frozen(obj31, true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj23) + ns.StartDialog(obj23, ns.GetHost()) + ns.ObjectOff(obj51) + goto LABEL3 +LABEL2: + if !(flag91 == true && flag90 == true) { + goto LABEL4 + } + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj22, true) + ns.Frozen(obj31, true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj23) + ns.StartDialog(obj23, ns.GetHost()) + ns.ObjectOff(obj51) + ns.ObjectGroupOff(gvar53) + goto LABEL3 +LABEL4: + ns.FrameTimer(10, MorganThanksTrigger) +LABEL3: + return +} +func MorganThanksStart() { + if !flag66 { + goto LABEL1 + } + ns.MoveObject(obj24, 3756, 4777) + ns.CreatureFollow(obj24, ns.GetHost()) + goto LABEL2 +LABEL1: + ns.LockDoor(obj39) +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War07a.scr:MorganTalk06") + ns.SetDialog(obj24, ns.NORMAL, GiveShieldStart, GiveShieldEnd) +} +func MorganThanksEnd() { + ns.CancelDialog(obj23) + ns.Pickup(ns.GetHost(), obj56) + ns.Pickup(ns.GetHost(), obj57) + ns.GiveXp(ns.GetHost(), 500) + ns.PrintToAll("GeneralPrint:GainedKey") + if !flag66 { + goto LABEL1 + } + ns.JournalEdit(ns.GetHost(), "RescueMorgan", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.StartDialog(obj24, ns.GetHost()) + goto LABEL2 +LABEL1: + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj22, false) + ns.Frozen(obj31, false) + flag92 = true +LABEL2: + return +} +func MorganContact() { + r0 := ns.IsAttackedBy(obj23, ns.GetCaller()) + if !r0 { + goto LABEL1 + } + if !flag92 { + goto LABEL1 + } + ns.AggressionLevel(obj23, 0.83) +LABEL1: + return +} +func MorganFriendStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MorganFriendTalk01") +} +func MorganFriendEnd() { + ns.JournalEdit(ns.GetHost(), "FindTunnel", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "RescueMorgan", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + flag66 = true + ns.CancelDialog(obj24) +} +func UnlockGearDoor() { + if !ns.IsLocked(obj39) { + goto LABEL1 + } + ns.UnlockDoor(obj39) +LABEL1: + return +} +func CheckMorganDoor() { + if !ns.IsLocked(obj45) { + goto LABEL1 + } + ns.FrameTimer(10, CheckMorganDoor) + goto LABEL2 +LABEL1: + ns.CancelDialog(obj23) + ns.ObjectOff(obj49) + ns.LookAtObject(obj23, ns.GetHost()) + ns.Chat(obj23, "War07A.scr:MorganTalk05") + ns.WayPointGroupOn(gvar134) + ns.Wander(obj23) +LABEL2: + return +} +func SeeMorgan() { + if !ns.IsCaller(obj23) { + goto LABEL1 + } + if flag67 { + goto LABEL1 + } + flag67 = true + ns.SetDialog(obj24, ns.NORMAL, GiveShieldStart, GiveShieldEnd) +LABEL1: + return +} +func GiveShieldStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj22, true) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MorganFriendTalk02") +} +func GiveShieldEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj22, false) + ns.Frozen(obj31, false) + ns.WideScreen(false) + flag92 = true + ns.CreatureGuard(obj23, ns.GetObjectX(obj23), ns.GetObjectY(obj23), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj24, ns.GetObjectX(obj24), ns.GetObjectY(obj24), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CancelDialog(obj24) + ns.Pickup(ns.GetHost(), obj55) + ns.PrintToAll("GeneralPrint:GainedItem") + ns.JournalEdit(ns.GetHost(), "RescueMorgan", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") +} +func FriendWaitStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MorganFriendTalk04") +} +func FriendWaitEnd() { + ns.SetDialog(obj24, ns.NORMAL, FriendWaitStart, FriendWaitEnd) +} +func LookForPlayer() { + if ns.IsTalking() { + goto LABEL1 + } + if !(flag89 == true || flag90 == true) { + goto LABEL1 + } + ns.CreatureGuard(obj24, ns.GetObjectX(obj24), ns.GetObjectY(obj24), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.StartDialog(obj24, ns.GetHost()) + return +LABEL1: + ns.FrameTimer(10, LookForPlayer) +} +func RewardTrigger() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if ns.IsLocked(obj45) { + goto LABEL1 + } + ns.ObjectGroupOff(gvar53) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj51) + ns.WideScreen(true) + flag89 = true +LABEL1: + return +} +func PlayerExitRoom() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag90 = false +LABEL1: + if !ns.IsCaller(obj23) { + goto LABEL2 + } + ns.AggressionLevel(obj23, 0.16) + ns.CreatureGuard(obj23, ns.GetWaypointX(wp140), ns.GetWaypointY(wp140), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL2: + if !ns.IsCaller(obj24) { + goto LABEL3 + } + ns.AggressionLevel(obj24, 0.16) + ns.CreatureGuard(obj24, ns.GetWaypointX(wp141), ns.GetWaypointY(wp141), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL3: + return +} +func OpenTowerGate() { + var v0 ns.ObjectID + if !(!ns.IsLocked(obj47) || !ns.IsLocked(obj48)) { + goto LABEL1 + } + v0 = ns.GetLastItem(ns.GetHost()) + for { + if v0 == 0 { + goto LABEL1 + } + if v0 != ns.Object("GoldKey2") { + goto LABEL2 + } + ns.Delete(v0) + goto LABEL1 + LABEL2: + if v0 != ns.Object("GoldKey1") { + goto LABEL3 + } + ns.Delete(v0) + ns.ObjectOff(ns.GetTrigger()) + goto LABEL1 + LABEL3: + v0 = ns.GetPreviousItem(v0) + } +LABEL1: + return +} +func BoothStart() { + ns.LookAtObject(obj36, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War03b:T4Post") +} +func BoothEnd() { +} +func NewMaxStart() { + ns.DestroyEveryChat() + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MaxOffer01") +} +func NewMaxEnd() { +} +func IndexPlayerInventory() { +} +func WarTrigger() { + ns.ObjectOff(ns.GetTrigger()) + ns.UnlockDoor(obj41) + ns.UnlockDoor(obj42) +} +func Injured() { + if flag82 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + if !ns.IsTrigger(obj25) { + goto LABEL2 + } + gvar94 = 1 + if flag82 { + goto LABEL3 + } + if !(flag86 == true || flag83 == true || flag85 == true || flag87 == true || flag88 == true) { + goto LABEL3 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) +LABEL3: + goto LABEL4 +LABEL2: + if !ns.IsTrigger(obj26) { + goto LABEL5 + } + gvar97 = 1 + if flag82 { + goto LABEL6 + } + if !(flag84 == true || flag83 == true || flag85 == true || flag87 == true || flag88 == true) { + goto LABEL6 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) +LABEL6: + goto LABEL4 +LABEL5: + if !ns.IsTrigger(obj28) { + goto LABEL7 + } + gvar95 = 1 + if flag82 { + goto LABEL8 + } + if !(flag86 == true || flag84 == true || flag85 == true || flag87 == true || flag88 == true) { + goto LABEL8 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) +LABEL8: + goto LABEL4 +LABEL7: + if !ns.IsTrigger(obj27) { + goto LABEL9 + } + gvar96 = 1 + if flag82 { + goto LABEL10 + } + if !(flag86 == true || flag83 == true || flag84 == true || flag87 == true || flag88 == true) { + goto LABEL10 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) +LABEL10: + goto LABEL4 +LABEL9: + if !ns.IsTrigger(obj29) { + goto LABEL11 + } + gvar98 = 1 + if flag82 { + goto LABEL12 + } + if !(flag86 == true || flag83 == true || flag85 == true || flag84 == true || flag88 == true) { + goto LABEL12 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) +LABEL12: + goto LABEL4 +LABEL11: + if !ns.IsTrigger(obj30) { + goto LABEL4 + } + gvar99 = 1 + if flag82 { + goto LABEL4 + } + if !(flag86 == true || flag83 == true || flag85 == true || flag87 == true || flag84 == true) { + goto LABEL4 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) +LABEL4: + return +} +func Killed() { + if flag82 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + if !ns.IsTrigger(obj25) { + goto LABEL2 + } + if flag82 { + goto LABEL3 + } + if !(flag86 == true || flag83 == true || flag85 == true || flag87 == true || flag88 == true) { + goto LABEL3 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.MoveObject(obj9, ns.GetWaypointX(wp137), ns.GetWaypointY(wp137)) + ns.MoveObject(obj12, ns.GetWaypointX(wp139), ns.GetWaypointY(wp139)) + ns.MoveObject(obj16, ns.GetWaypointX(wp138), ns.GetWaypointY(wp138)) + ns.MoveObject(obj14, ns.GetWaypointX(wp136), ns.GetWaypointY(wp136)) +LABEL3: + goto LABEL4 +LABEL2: + if !ns.IsTrigger(obj26) { + goto LABEL5 + } + if flag82 { + goto LABEL6 + } + if !(flag84 == true || flag83 == true || flag85 == true || flag87 == true || flag88 == true) { + goto LABEL6 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.MoveObject(obj9, ns.GetWaypointX(wp137), ns.GetWaypointY(wp137)) + ns.MoveObject(obj12, ns.GetWaypointX(wp139), ns.GetWaypointY(wp139)) + ns.MoveObject(obj16, ns.GetWaypointX(wp138), ns.GetWaypointY(wp138)) + ns.MoveObject(obj14, ns.GetWaypointX(wp136), ns.GetWaypointY(wp136)) +LABEL6: + goto LABEL4 +LABEL5: + if !ns.IsTrigger(obj28) { + goto LABEL7 + } + if flag82 { + goto LABEL8 + } + if !(flag86 == true || flag84 == true || flag85 == true || flag87 == true || flag88 == true) { + goto LABEL8 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.MoveObject(obj9, ns.GetWaypointX(wp137), ns.GetWaypointY(wp137)) + ns.MoveObject(obj12, ns.GetWaypointX(wp139), ns.GetWaypointY(wp139)) + ns.MoveObject(obj16, ns.GetWaypointX(wp138), ns.GetWaypointY(wp138)) + ns.MoveObject(obj14, ns.GetWaypointX(wp136), ns.GetWaypointY(wp136)) +LABEL8: + goto LABEL4 +LABEL7: + if !ns.IsTrigger(obj27) { + goto LABEL9 + } + if flag82 { + goto LABEL10 + } + if !(flag86 == true || flag83 == true || flag84 == true || flag87 == true || flag88 == true) { + goto LABEL10 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.MoveObject(obj9, ns.GetWaypointX(wp137), ns.GetWaypointY(wp137)) + ns.MoveObject(obj12, ns.GetWaypointX(wp139), ns.GetWaypointY(wp139)) + ns.MoveObject(obj16, ns.GetWaypointX(wp138), ns.GetWaypointY(wp138)) + ns.MoveObject(obj14, ns.GetWaypointX(wp136), ns.GetWaypointY(wp136)) +LABEL10: + goto LABEL4 +LABEL9: + if !ns.IsTrigger(obj29) { + goto LABEL11 + } + if flag82 { + goto LABEL12 + } + if !(flag86 == true || flag83 == true || flag85 == true || flag84 == true || flag88 == true) { + goto LABEL12 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.MoveObject(obj9, ns.GetWaypointX(wp137), ns.GetWaypointY(wp137)) + ns.MoveObject(obj12, ns.GetWaypointX(wp139), ns.GetWaypointY(wp139)) + ns.MoveObject(obj16, ns.GetWaypointX(wp138), ns.GetWaypointY(wp138)) + ns.MoveObject(obj14, ns.GetWaypointX(wp136), ns.GetWaypointY(wp136)) +LABEL12: + goto LABEL4 +LABEL11: + if !ns.IsTrigger(obj30) { + goto LABEL4 + } + if flag82 { + goto LABEL4 + } + if !(flag86 == true || flag83 == true || flag85 == true || flag87 == true || flag84 == true) { + goto LABEL4 + } + gvar102 = gvar128 + ns.AggressionLevel(obj25, 0.83) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj28, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.MoveObject(obj9, ns.GetWaypointX(wp137), ns.GetWaypointY(wp137)) + ns.MoveObject(obj12, ns.GetWaypointX(wp139), ns.GetWaypointY(wp139)) + ns.MoveObject(obj16, ns.GetWaypointX(wp138), ns.GetWaypointY(wp138)) + ns.MoveObject(obj14, ns.GetWaypointX(wp136), ns.GetWaypointY(wp136)) +LABEL4: + return +} +func EscapeHatch() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.WallGroupOpen(gvar64) +LABEL1: + return +} +func CloseHatch() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.WallGroupClose(gvar64) +LABEL1: + return +} +func MapInitialize() { + obj6 = ns.Object("TowerNPC") + obj7 = ns.Object("TowerNPC2") + obj8 = ns.Object("TowerMaiden") + obj9 = ns.Object("F6Townsman2") + obj10 = ns.Object("Jesse") + obj11 = ns.Object("Priest") + obj14 = ns.Object("BrightBlades") + obj15 = ns.Object("BrightBladesA") + obj12 = ns.Object("Mystic") + obj13 = ns.Object("Mystic2") + obj18 = ns.Object("BookVendor") + obj19 = ns.Object("BookVendorA") + obj16 = ns.Object("Loreman") + obj17 = ns.Object("Kincaid") + obj20 = ns.Object("LameBarKeep") + obj21 = ns.Object("Max") + obj22 = ns.Object("Warden") + obj23 = ns.Object("Morgan") + obj24 = ns.Object("F6FireGuard8") + obj32 = ns.Object("AppleMan") + obj33 = ns.Object("Undertaker") + obj34 = ns.Object("Mlurgh") + obj35 = ns.Object("Grillf") + obj36 = ns.Object("F6Elite4") + obj37 = ns.Object("NPCMover") + obj38 = ns.Object("DaMan") + obj28 = ns.Object("Dorian") + obj26 = ns.Object("Jorgan") + obj27 = ns.Object("Grunbar") + obj25 = ns.Object("Albi") + obj29 = ns.Object("Civvy3") + obj30 = ns.Object("Civvy4") + obj31 = ns.Object("Daniel") + obj62 = ns.Object("DaManKey") + obj39 = ns.Object("GearRoomDoor") + obj40 = ns.Object("GuardDoor1") + obj41 = ns.Object("MaxHomeDoor1") + obj42 = ns.Object("MaxHomeDoor2") + obj43 = ns.Object("FirstJailDoor") + obj44 = ns.Object("WarriorCellDoor") + obj45 = ns.Object("MorganCellDoor") + obj46 = ns.Object("BackRoomDoor") + obj47 = ns.Object("TowerGate1") + obj48 = ns.Object("TowerGate2") + obj49 = ns.Object("JailCellTrigger") + obj50 = ns.Object("WardenBackTrigger") + obj51 = ns.Object("ThanksTrigger") + obj54 = ns.Object("WardenFaceThis") + obj55 = ns.Object("RogueShield") + obj56 = ns.Object("MorganGold") + obj57 = ns.Object("TowerKey") + obj58 = ns.Object("GoldKey1") + obj59 = ns.Object("GoldKey2") + obj60 = ns.Object("SecretShirt") + obj61 = ns.Object("SecretApple") + gvar53 = ns.ObjectGroup("RewardTriggerGroup") + gvar63 = ns.WallGroup("JumpWalls") + gvar64 = ns.WallGroup("FallWalls") + //gvar135 = ns.Waypoint("MorganFriendWP") + wp133 = ns.Waypoint("WardenFooledWP") + gvar134 = ns.WaypointGroup("EscapeWP") + gvar135 = ns.WaypointGroup("MorganFriendWP") + wp4 = ns.Waypoint("Storage") + wp131 = ns.Waypoint("PlayerSounds") + wp132 = ns.Waypoint("SecretSounds") + wp136 = ns.Waypoint("BBWP") + wp137 = ns.Waypoint("PhimWP") + wp139 = ns.Waypoint("MVWP") + wp138 = ns.Waypoint("KinWP") + wp140 = ns.Waypoint("MorganGuardWP") + wp141 = ns.Waypoint("MickGuardWP") + ns.WayPointGroupOff(gvar134) + ns.WayPointGroupOff(gvar135) + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.LockDoor(obj44) + ns.LockDoor(obj41) + ns.LockDoor(obj42) + ns.SetOwner(ns.GetHost(), obj11) + ns.SetDialog(obj11, ns.NORMAL, PriestGreetingStart, PriestGreetingEnd) + ns.SetDialog(obj23, ns.NORMAL, MorganHintStart, MorganHintEnd) + ns.SetDialog(obj24, ns.NORMAL, MorganFriendStart, MorganFriendEnd) + ns.SetDialog(obj21, ns.NORMAL, NewMaxStart, NewMaxEnd) + ns.SetDialog(obj33, ns.NORMAL, UndertakerTalkStart, UndertakerTalkEnd) + ns.SetDialog(obj36, ns.NORMAL, BoothStart, BoothEnd) + ns.StoryPic(obj21, "MaxPic") + ns.StoryPic(obj33, "UndertakerPic") + ns.StoryPic(obj28, "Townsman3Pic") + ns.StoryPic(obj27, "Townsman2Pic") + ns.StoryPic(obj25, "Townsman1Pic") + ns.StoryPic(obj26, "Warrior2Pic") + ns.StoryPic(obj22, "WardenPic") + ns.StoryPic(obj11, "GalavaPriestPic") + ns.StoryPic(obj23, "MorganPic") + ns.StoryPic(obj24, "FentonPic") + ns.StoryPic(obj31, "DrunkPic") + ns.StoryPic(obj36, "MalePic4") + gvar100 = gvar118 + gvar101 = gvar122 + gvar102 = gvar126 + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func MickContact() { + r0 := ns.IsAttackedBy(obj24, ns.GetCaller()) + if !r0 { + goto LABEL1 + } + if !flag92 { + goto LABEL1 + } + ns.AggressionLevel(obj24, 0.83) +LABEL1: + return +} +func WardenWaiting() { + if !ns.IsCaller(obj22) { + goto LABEL1 + } + if !(gvar102 != gvar126 || gvar101 == gvar125) { + goto LABEL1 + } + if !flag82 { + goto LABEL1 + } + ns.CreatureIdle(obj22) + ns.AggressionLevel(obj22, 0.16) + ns.CreatureGuard(obj22, ns.GetObjectX(obj22), ns.GetObjectY(obj22), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func ResetMaxDialog() { + if gvar148 != gvar147 { + goto LABEL1 + } + ns.CancelDialog(obj21) + goto LABEL2 +LABEL1: + ns.SetDialog(obj21, ns.YESNO, MaxDialogStart, MaxDialogEnd) +LABEL2: + return +} +func NullFunction() { +} +func MaxDie() { + ns.CancelDialog(obj21) +} +func DaManDragged() { + if !ns.IsCaller(obj38) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.UnlockDoor(obj41) + ns.UnlockDoor(obj42) +LABEL1: + return +} +func EmptyPlayerInventory() { + var v0 int + v0 = gvar151 + if v0 == gvar149 { + goto LABEL1 + } + if v0 == gvar150 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Drop(ns.GetHost(), obj5[ivar153]) + ivar154 += 1 + gvar151 = gvar150 + ns.FrameTimer(1, EmptyPlayerInventory) +LABEL2: + if !(ivar153 <= ivar152) { + goto LABEL3 + } + ns.MoveObject(obj5[ivar153], ns.GetWaypointX(wp4), ns.GetWaypointY(wp4)) + gvar151 = gvar149 + ivar153 += 1 + ns.FrameTimer(1, EmptyPlayerInventory) +LABEL3: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.MoveWaypoint(wp131, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.AudioEvent(ns.RestoreHealthName, wp131) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, ns.Waypoint("WellWP")) +} +func Jump() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), obj60) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), obj61) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar63) + ns.Chat(obj8, "Con02a:BarMaiden2") + ns.SecondTimer(3, Upset) +LABEL1: + return +} +func Upset() { + ns.DestroyEveryChat() + ns.Chat(obj6, "Wiz02B.scr:LewisTalk06") + ns.SecondTimer(3, StartJump) +} +func StartJump() { + ns.WallGroupOpen(gvar64) + ns.Wander(obj6) +} +func MoveJumper() { + if !ns.IsCaller(obj6) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.CreatureIdle(obj6) + ns.ObjectOn(obj37) + ns.Chat(obj6, "Wiz02B.scr:LewisTalk03") +LABEL1: + return +} +func KillJumper() { + if !ns.IsCaller(obj6) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + ns.Damage(obj6, 0, 500, 0) + ns.WallGroupClose(gvar64) + ns.WallGroupClose(gvar63) + ns.NoWallSound(false) +LABEL1: + return +} +func DaManHurt() { + if !(!ns.IsLocked(obj41) || !ns.IsLocked(obj42)) { + goto LABEL1 + } + ns.AggressionLevel(obj38, 0.83) + ns.Attack(obj38, ns.GetHost()) +LABEL1: + return +} +func DaManDie() { + if !(ns.IsLocked(obj41) && ns.IsLocked(obj42)) { + goto LABEL1 + } + ns.Drop(obj38, obj62) + ns.Delete(obj62) +LABEL1: + return +} +func MorganRecognize() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag91 = true +LABEL1: + return +} +func MorganLoseSight() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag91 = false +LABEL1: + return +} +func ScorpionAway() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func CivvyJailCheck() { + if !ns.IsCaller(obj26) { + goto LABEL1 + } + flag160 = true + ns.GoBackHome(obj26) +LABEL1: + if !ns.IsCaller(obj27) { + goto LABEL2 + } + flag159 = true + ns.GoBackHome(obj27) +LABEL2: + if !ns.IsCaller(obj25) { + goto LABEL3 + } + flag158 = true + ns.GoBackHome(obj25) +LABEL3: + if !ns.IsCaller(obj28) { + goto LABEL4 + } + flag157 = true + ns.GoBackHome(obj28) +LABEL4: + if !ns.IsCaller(obj29) { + goto LABEL5 + } + flag161 = true + ns.GoBackHome(obj29) +LABEL5: + if !ns.IsCaller(obj30) { + goto LABEL6 + } + flag162 = true + ns.GoBackHome(obj30) +LABEL6: + return +} +func FireballSecret() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp132, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp132) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +LABEL1: + return +} +func PlayerEnterRoom() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag90 = true +LABEL1: + if !ns.IsCaller(obj26) { + goto LABEL2 + } + flag160 = true + ns.GoBackHome(obj26) +LABEL2: + if !ns.IsCaller(obj27) { + goto LABEL3 + } + flag159 = true + ns.GoBackHome(obj27) +LABEL3: + if !ns.IsCaller(obj25) { + goto LABEL4 + } + flag158 = true + ns.GoBackHome(obj25) +LABEL4: + if !ns.IsCaller(obj28) { + goto LABEL5 + } + flag157 = true + ns.GoBackHome(obj28) +LABEL5: + if !ns.IsCaller(obj29) { + goto LABEL6 + } + flag161 = true + ns.GoBackHome(obj29) +LABEL6: + if !ns.IsCaller(obj30) { + goto LABEL7 + } + flag162 = true + ns.GoBackHome(obj30) +LABEL7: + return +} +func JorganReport() { + if gvar97 != 1 { + goto LABEL1 + } + ns.AggressionLevel(obj26, 0.83) + ns.CreatureHunt(obj26) + goto LABEL2 +LABEL1: + ns.AggressionLevel(obj26, 0.16) + ns.Wander(obj26) +LABEL2: + flag160 = false +} +func AlbiReport() { + if gvar94 != 1 { + goto LABEL1 + } + ns.AggressionLevel(obj25, 0.83) + ns.CreatureHunt(obj25) + goto LABEL2 +LABEL1: + ns.AggressionLevel(obj25, 0.16) + ns.Wander(obj25) +LABEL2: + flag158 = false +} +func GrunbarReport() { + if gvar96 != 1 { + goto LABEL1 + } + ns.AggressionLevel(obj27, 0.83) + ns.CreatureHunt(obj27) + goto LABEL2 +LABEL1: + ns.AggressionLevel(obj27, 0.16) + ns.Wander(obj27) +LABEL2: + flag159 = false +} +func DorianReport() { + if gvar95 != 1 { + goto LABEL1 + } + ns.AggressionLevel(obj28, 0.83) + ns.CreatureHunt(obj28) + goto LABEL2 +LABEL1: + ns.AggressionLevel(obj28, 0.16) + ns.Wander(obj28) +LABEL2: + flag157 = false +} +func Civvy3Report() { + if gvar98 != 1 { + goto LABEL1 + } + ns.AggressionLevel(obj29, 0.83) + ns.CreatureHunt(obj29) + goto LABEL2 +LABEL1: + ns.AggressionLevel(obj29, 0.16) + ns.Wander(obj29) +LABEL2: + flag161 = false +} +func Civvy4Report() { + if gvar99 != 1 { + goto LABEL1 + } + ns.AggressionLevel(obj30, 0.83) + ns.CreatureHunt(obj30) + goto LABEL2 +LABEL1: + ns.AggressionLevel(obj30, 0.16) + ns.Wander(obj30) +LABEL2: + flag162 = false +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war07b/dummy_test.go b/examples/war07b/dummy_test.go new file mode 100644 index 0000000..1bd07c7 --- /dev/null +++ b/examples/war07b/dummy_test.go @@ -0,0 +1,6 @@ +package war07b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war07b/war07b.go b/examples/war07b/war07b.go new file mode 100644 index 0000000..b224a6d --- /dev/null +++ b/examples/war07b/war07b.go @@ -0,0 +1,191 @@ +package war07b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + gvar19 ns.ObjectGroupID + gvar20 ns.ObjectGroupID + gvar21 ns.ObjectGroupID + gvar22 ns.ObjectGroupID + gvar23 ns.WallID + gvar24 ns.WallGroupID + gvar25 ns.WallGroupID + wp26 ns.WaypointID + flag27 bool + flag28 bool + flag29 bool + flag30 bool +) + +func init() { + flag27 = false + flag28 = false + flag29 = false + flag30 = false +} +func EnableReceptionist() { + ns.ObjectOn(obj5) + if !(ns.CurrentHealth(obj5) > 0) { + goto LABEL1 + } + ns.Chat(obj5, "War07B.scr:MainReceptionistTalk01") +LABEL1: + ns.ObjectGroupOff(gvar22) + ns.CreatureHunt(obj11) + ns.CreatureHunt(obj12) + ns.CreatureHunt(obj13) +} +func ClassroomAttacks() { + ns.ObjectGroupOn(gvar19) + ns.ObjectOn(obj6) +} +func BirdManAttacks() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if flag29 { + goto LABEL1 + } + ns.Chat(obj7, "War07B.scr:BirdManTalk01") + flag29 = true +LABEL1: + return +} +func OpenLabBookcase() { + ns.ObjectOn(obj16) + ns.ObjectOn(obj17) + ns.WallOpen(gvar23) + ns.WallGroupBreak(gvar24) + ns.ObjectGroupOff(gvar21) + ns.GroupDelete(gvar21) + ns.ObjectOff(obj15) + flag28 = true +} +func DestroyLab() { + if flag28 { + goto LABEL1 + } + ns.Chat(obj8, "War07B.scr:TempWizardTalk01") + ns.ObjectGroupOn(gvar20) + ns.WallGroupOpen(gvar25) + ns.Delete(obj14) + flag28 = true +LABEL1: + return +} +func EnterClassroom() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL2 + } + ns.Frozen(obj11, true) +LABEL2: + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL3 + } + ns.Frozen(obj12, true) +LABEL3: + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL4 + } + ns.Frozen(obj13, true) +LABEL4: + if !(ns.CurrentHealth(obj6) > 0) { + goto LABEL5 + } + ns.Frozen(obj6, true) + ns.StartDialog(obj6, ns.GetHost()) + goto LABEL1 +LABEL5: + ClassroomAttacks() +LABEL1: + return +} +func TeacherStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07B.scr:TeacherTalk01") +} +func TeacherEnd() { + ns.CancelDialog(obj6) + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL1 + } + ns.Frozen(obj11, false) +LABEL1: + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL2 + } + ns.Frozen(obj12, false) +LABEL2: + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL3 + } + ns.Frozen(obj13, false) +LABEL3: + ns.Frozen(obj6, false) + ClassroomAttacks() +} +func MapInitialize() { + obj4 = ns.Object("ChamberSpawn") + obj5 = ns.Object("MainReceptionist") + obj6 = ns.Object("Teacher") + obj7 = ns.Object("BirdMan") + obj8 = ns.Object("TempWizard") + obj9 = ns.Object("TrapWiz1") + obj10 = ns.Object("TrapWiz2") + obj11 = ns.Object("MageHunter1") + obj12 = ns.Object("MageHunter2") + obj13 = ns.Object("MageHunter3") + obj14 = ns.Object("FloorOneMagicAxe") + obj15 = ns.Object("LabExplodeTrigger") + obj16 = ns.Object("LabBookcaseMover1") + obj17 = ns.Object("LabBookcaseMover2") + obj18 = ns.Object("ToLevelTwoTP") + gvar19 = ns.ObjectGroup("Students") + gvar20 = ns.ObjectGroup("LabFlames") + gvar21 = ns.ObjectGroup("ExplodingBarrels") + gvar22 = ns.ObjectGroup("ReceptionTriggers") + gvar23 = ns.Wall(123, 191) + gvar24 = ns.WallGroup("LabWalls") + gvar25 = ns.WallGroup("LabSecretWalls2") + wp26 = ns.Waypoint("PlayerSounds") + ns.ObjectOff(obj5) + ns.ObjectOff(obj6) + ns.ObjectGroupOff(gvar19) + ns.ObjectGroupOff(gvar20) + ns.StoryPic(obj6, "WizardGuard2Pic") + ns.SetDialog(obj6, ns.NORMAL, TeacherStart, TeacherEnd) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func MapEntry() { + ns.Music(16, 100) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war07c/dummy_test.go b/examples/war07c/dummy_test.go new file mode 100644 index 0000000..af8a061 --- /dev/null +++ b/examples/war07c/dummy_test.go @@ -0,0 +1,6 @@ +package war07c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war07c/war07c.go b/examples/war07c/war07c.go new file mode 100644 index 0000000..843eaed --- /dev/null +++ b/examples/war07c/war07c.go @@ -0,0 +1,100 @@ +package war07c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + wp6 ns.WaypointID + wp7 ns.WaypointID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + gvar16 ns.ObjectGroupID + gvar17 int +) + +func SecondFloorPatrolMage1() { + ns.Wander(obj8) +} +func SecondFloorPatrolMage2() { + ns.Wander(obj9) +} +func SecondFloorPatrolMage3() { + ns.Wander(obj10) +} +func ActivateGears() { + if !ns.IsObjectOn(obj5) { + goto LABEL1 + } + ns.MoveWaypoint(wp6, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.Gear2, wp6) + ns.ObjectGroupOff(gvar16) + ns.ObjectOff(obj11) + ns.ObjectOff(obj12) + ns.ObjectOff(obj13) + ns.ObjectOff(obj14) + goto LABEL2 +LABEL1: + ns.MoveWaypoint(wp6, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.Gear3, wp6) + ns.ObjectGroupOn(gvar16) + ns.ObjectOn(obj11) + ns.ObjectOn(obj12) + ns.ObjectOn(obj13) + ns.ObjectOn(obj14) +LABEL2: + return +} +func TrainingRoomXP() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp7, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp7) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +LABEL1: + return +} +func MapInitialize() { + obj8 = ns.Object("PatrolMage1") + obj9 = ns.Object("PatrolMage2") + obj10 = ns.Object("PatrolMage3") + obj4 = ns.Object("ToLevelOneTP") + obj11 = ns.Object("Globe1") + obj12 = ns.Object("Globe2") + obj13 = ns.Object("Globe3") + obj14 = ns.Object("Globe4") + obj5 = ns.Object("TestGear") + obj15 = ns.Object("ResetWizTrigger") + gvar16 = ns.ObjectGroup("Level2Gears") + wp6 = ns.Waypoint("PlayerSounds") + wp7 = ns.Waypoint("SecretSounds") + ns.CreatureHunt(obj8) + ns.CreatureHunt(obj9) + ns.CreatureHunt(obj10) + ns.ObjectGroupOn(gvar16) +} +func MapEntry() { + ns.Music(16, 100) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war07d/dummy_test.go b/examples/war07d/dummy_test.go new file mode 100644 index 0000000..d35b33c --- /dev/null +++ b/examples/war07d/dummy_test.go @@ -0,0 +1,6 @@ +package war07d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war07d/war07d.go b/examples/war07d/war07d.go new file mode 100644 index 0000000..3f0b36e --- /dev/null +++ b/examples/war07d/war07d.go @@ -0,0 +1,61 @@ +package war07d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + wp4 ns.WaypointID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + gvar12 ns.WallGroupID +) + +func SetUpCreatures() { + ns.CreatureHunt(obj6) + ns.CreatureHunt(obj7) + ns.CreatureHunt(obj8) + ns.CreatureHunt(obj9) + ns.CreatureHunt(obj10) + ns.CreatureHunt(obj11) +} +func OpenMuseumWalls() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar12) +LABEL1: + return +} +func MapInitialize() { + wp4 = ns.Waypoint("PlayerSounds") + obj6 = ns.Object("WizHunter1") + obj7 = ns.Object("WizHunter2") + obj8 = ns.Object("WizHunter3") + obj9 = ns.Object("MuseumMage1") + obj10 = ns.Object("MuseumMage2") + obj11 = ns.Object("MuseumMage3") + obj5 = ns.Object("Dalmen") + gvar12 = ns.WallGroup("MuseumWalls") + ns.FrameTimer(1, SetUpCreatures) +} +func MapEntry() { + ns.Music(16, 100) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war07e/dummy_test.go b/examples/war07e/dummy_test.go new file mode 100644 index 0000000..a6237a0 --- /dev/null +++ b/examples/war07e/dummy_test.go @@ -0,0 +1,6 @@ +package war07e + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war07e/war07e.go b/examples/war07e/war07e.go new file mode 100644 index 0000000..c61564a --- /dev/null +++ b/examples/war07e/war07e.go @@ -0,0 +1,110 @@ +package war07e + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + gvar8 ns.WallGroupID + gvar9 ns.WallGroupID + gvar10 ns.WallGroupID + flag11 bool + flag12 bool + flag13 bool + wp14 ns.WaypointID + wp15 ns.WaypointID +) + +func init() { + flag11 = false + flag12 = false + flag13 = false +} +func CreatureSetup() { + ns.CreatureHunt(obj4) + ns.CreatureHunt(obj5) +} +func SaveGame() { + ns.AutoSave() + ns.ObjectOff(obj7) +} +func WallSetOneButton() { + if flag11 { + goto LABEL1 + } + ns.WallGroupOpen(gvar8) + flag11 = true + goto LABEL2 +LABEL1: + ns.WallGroupClose(gvar8) + flag11 = false +LABEL2: + return +} +func WallSetTwoButton() { + if flag12 { + goto LABEL1 + } + ns.WallGroupOpen(gvar9) + flag12 = true + goto LABEL2 +LABEL1: + ns.WallGroupClose(gvar9) + flag12 = false +LABEL2: + return +} +func WallSetThreeButton() { + if flag13 { + goto LABEL1 + } + ns.WallGroupOpen(gvar10) + flag13 = true + ns.ObjectOn(obj6) + goto LABEL2 +LABEL1: + ns.WallGroupClose(gvar10) + flag13 = false + ns.ObjectOff(obj6) +LABEL2: + return +} +func HTHAttack() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL1: + return +} +func MapInitialize() { + obj4 = ns.Object("Hunter2") + obj5 = ns.Object("Hunter3") + obj6 = ns.Object("MainTeleporter") + obj7 = ns.Object("SaveGameTrigger") + gvar8 = ns.WallGroup("WallSetOne") + gvar9 = ns.WallGroup("WallSetTwo") + gvar10 = ns.WallGroup("WallSetThree") + wp14 = ns.Waypoint("PlayerSounds") + wp15 = ns.Waypoint("FromFloor5WP") + ns.ObjectOff(obj6) + ns.FrameTimer(1, CreatureSetup) +} +func MapEntry() { + ns.Music(16, 100) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war07f/dummy_test.go b/examples/war07f/dummy_test.go new file mode 100644 index 0000000..6eeae71 --- /dev/null +++ b/examples/war07f/dummy_test.go @@ -0,0 +1,6 @@ +package war07f + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war07f/war07f.go b/examples/war07f/war07f.go new file mode 100644 index 0000000..81c3455 --- /dev/null +++ b/examples/war07f/war07f.go @@ -0,0 +1,25 @@ +package war07f + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var wp4 ns.WaypointID + +func MapInitialize() { + wp4 = ns.Waypoint("FromFloor6WP") +} +func MapEntry() { + ns.Music(27, 100) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war07g/dummy_test.go b/examples/war07g/dummy_test.go new file mode 100644 index 0000000..61a4872 --- /dev/null +++ b/examples/war07g/dummy_test.go @@ -0,0 +1,6 @@ +package war07g + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war07g/war07g.go b/examples/war07g/war07g.go new file mode 100644 index 0000000..0c8a2b3 --- /dev/null +++ b/examples/war07g/war07g.go @@ -0,0 +1,538 @@ +package war07g + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + gvar34 ns.ObjectGroupID + wp35 ns.WaypointID + gvar36 ns.WallGroupID + gvar37 ns.WallGroupID + flag38 bool + flag39 bool + flag40 bool + flag41 bool + fvar42 float32 + fvar43 float32 + fvar44 float32 + fvar45 float32 + fvar46 float32 + fvar47 float32 + fvar48 float32 + fvar49 float32 + fvar50 float32 + fvar51 float32 + fvar52 float32 + fvar53 float32 + fvar54 float32 + fvar55 float32 + fvar56 float32 + fvar57 float32 + fvar58 float32 + fvar59 float32 + fvar60 float32 + fvar61 float32 + obj62 ns.ObjectID + gvar63 int + gvar64 int + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + obj80 ns.ObjectID + obj81 ns.ObjectID + obj82 ns.ObjectID + obj83 ns.ObjectID + obj84 ns.ObjectID + obj85 ns.ObjectID + obj86 ns.ObjectID + obj87 ns.ObjectID + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + gvar95 int + gvar96 ns.ObjectGroupID + gvar97 ns.ObjectGroupID + gvar98 ns.ObjectGroupID + gvar99 ns.ObjectGroupID + gvar100 ns.ObjectGroupID + gvar101 ns.ObjectGroupID + gvar102 ns.ObjectGroupID + gvar103 ns.ObjectGroupID + gvar104 ns.ObjectGroupID + flag105 bool + wp106 ns.WaypointID + wp107 ns.WaypointID + wp108 ns.WaypointID + wp109 ns.WaypointID + wp110 ns.WaypointID + gvar111 ns.TimerID + ivar112 int + ivar113 int +) + +func init() { + flag38 = false + flag39 = false + flag40 = false + flag41 = false + flag105 = false + ivar112 = 0 + ivar113 = 0 +} +func LightShow() { + var ( + v0 int + v1 int + ) + ns.MoveWaypoint(wp35, ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + v0 = ns.Random(1, 8) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + if v1 == 3 { + goto LABEL3 + } + if v1 == 4 { + goto LABEL4 + } + if v1 == 5 { + goto LABEL5 + } + if v1 == 6 { + goto LABEL6 + } + if v1 == 7 { + goto LABEL7 + } + if v1 == 8 { + goto LABEL8 + } + goto LABEL9 +LABEL1: + ns.AudioEvent(ns.LightningBolt, wp35) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj6), ns.GetObjectY(obj6), ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + goto LABEL9 +LABEL2: + ns.AudioEvent(ns.LightningBolt, wp35) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj7), ns.GetObjectY(obj7), ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + goto LABEL9 +LABEL3: + ns.AudioEvent(ns.LightningBolt, wp35) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj8), ns.GetObjectY(obj8), ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + goto LABEL9 +LABEL4: + ns.AudioEvent(ns.LightningBolt, wp35) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj9), ns.GetObjectY(obj9), ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + goto LABEL9 +LABEL5: + ns.AudioEvent(ns.LightningBolt, wp35) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj10), ns.GetObjectY(obj10), ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + goto LABEL9 +LABEL6: + ns.AudioEvent(ns.LightningBolt, wp35) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj11), ns.GetObjectY(obj11), ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + goto LABEL9 +LABEL7: + ns.AudioEvent(ns.LightningBolt, wp35) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj12), ns.GetObjectY(obj12), ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + goto LABEL9 +LABEL8: + ns.AudioEvent(ns.LightningBolt, wp35) + ns.Effect(ns.LIGHTNING, ns.GetObjectX(obj13), ns.GetObjectY(obj13), ns.GetObjectX(obj4), ns.GetObjectY(obj4)) + goto LABEL9 +LABEL9: + if flag41 { + goto LABEL10 + } + ns.FrameTimer(30, LightShow) +LABEL10: + return +} +func PlateOneTrigger() { + flag38 = true + if !(flag39 == true && flag40 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar36) + ns.MoveWaypoint(wp35, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BigGong, wp35) +LABEL1: + return +} +func PlateTwoTrigger() { + flag39 = true + if !(flag38 == true && flag40 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar36) + ns.MoveWaypoint(wp35, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BigGong, wp35) +LABEL1: + return +} +func PlateThreeTrigger() { + flag40 = true + if !(flag38 == true && flag39 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar36) + ns.MoveWaypoint(wp35, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BigGong, wp35) +LABEL1: + return +} +func PlateOneRelease() { + flag38 = false +} +func PlateTwoRelease() { + flag39 = false +} +func PlateThreeRelease() { + flag40 = false +} +func HONTrigger() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(obj4) + ns.ObjectOff(obj5) + ns.ObjectOff(obj14) + ns.ObjectOff(obj15) + ns.ObjectOff(obj16) + ns.ObjectOff(obj17) + ns.ObjectOff(obj18) + ns.ObjectOff(obj19) + ns.ObjectOff(obj20) + ns.ObjectOff(obj21) + ns.ObjectOff(obj22) + ns.ObjectOff(obj23) + ns.MoveObject(obj24, fvar42, fvar52) + ns.MoveObject(obj25, fvar43, fvar53) + ns.MoveObject(obj26, fvar44, fvar54) + ns.MoveObject(obj27, fvar45, fvar55) + ns.MoveObject(obj28, fvar46, fvar56) + ns.MoveObject(obj29, fvar47, fvar57) + ns.MoveObject(obj30, fvar48, fvar58) + ns.MoveObject(obj31, fvar49, fvar59) + ns.MoveObject(obj32, fvar50, fvar60) + ns.MoveObject(obj33, fvar51, fvar61) + flag41 = true + ns.SetHalberd(1) + ns.PrintToAll("Con07H.scr:HONTada") + ns.JournalEdit(ns.GetHost(), "GetHON", 4) + ns.SecondTimer(2, FadeOut) +LABEL1: + return +} +func MakeMapSwitch() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), 1922, 2014) +} +func FadeOut() { + ns.Blind() + ns.Frozen(ns.GetHost(), true) + ns.Music(0, 100) + ns.FrameTimer(60, MakeMapSwitch) +} +func HONSetup() { + fvar42 = ns.GetObjectX(obj14) + fvar43 = ns.GetObjectX(obj15) + fvar44 = ns.GetObjectX(obj16) + fvar45 = ns.GetObjectX(obj17) + fvar46 = ns.GetObjectX(obj18) + fvar47 = ns.GetObjectX(obj19) + fvar48 = ns.GetObjectX(obj20) + fvar49 = ns.GetObjectX(obj21) + fvar50 = ns.GetObjectX(obj22) + fvar51 = ns.GetObjectX(obj23) + fvar52 = ns.GetObjectY(obj14) + fvar53 = ns.GetObjectY(obj15) + fvar54 = ns.GetObjectY(obj16) + fvar55 = ns.GetObjectY(obj17) + fvar56 = ns.GetObjectY(obj18) + fvar57 = ns.GetObjectY(obj19) + fvar58 = ns.GetObjectY(obj20) + fvar59 = ns.GetObjectY(obj21) + fvar60 = ns.GetObjectY(obj22) + fvar61 = ns.GetObjectY(obj23) +} +func CreatureSetup() { +} +func Group1Die() { + ivar112 += 1 + if !(ivar112 >= 2) { + goto LABEL1 + } + ns.UnlockDoor(obj86) + ns.UnlockDoor(obj87) +LABEL1: + return +} +func StartChamber() { + ns.AudioEvent(ns.FloorSpikesUp, wp110) + ns.AudioEvent(ns.FloorSpikesDown, wp109) + ns.ObjectGroupOn(gvar97) + ns.ObjectGroupOn(gvar99) + ns.ObjectGroupOff(gvar96) + ns.ObjectGroupOff(gvar98) + flag105 = true + ns.SecondTimer(3, ChamberSpikes) +} +func ChamberSpikes() { + if flag105 { + goto LABEL1 + } + ns.AudioEvent(ns.FloorSpikesDown, wp109) + ns.ObjectGroupOff(gvar96) + ns.ObjectGroupOff(gvar98) + ns.FrameTimer(10, EnableSpikes2And4) + goto LABEL2 +LABEL1: + ns.AudioEvent(ns.FloorSpikesDown, wp110) + ns.ObjectGroupOff(gvar97) + ns.ObjectGroupOff(gvar99) + ns.FrameTimer(10, EnableSpikes1And3) +LABEL2: + gvar111 = ns.SecondTimer(3, ChamberSpikes) +} +func Block1Jiggle() { + ns.MoveWaypoint(wp35, ns.GetObjectX(obj93), ns.GetObjectY(obj93)) + ns.AudioEvent(ns.HammerMissing, wp35) + ns.Effect(ns.JIGGLE, ns.GetObjectX(obj93), ns.GetObjectY(obj93), 10, 0) +} +func Block2Jiggle() { + ns.AudioEvent(ns.HammerMissing, wp106) + ns.Effect(ns.JIGGLE, ns.GetObjectX(obj94), ns.GetObjectY(obj94), 10, 0) +} +func EnableSpikes2And4() { + ns.AudioEvent(ns.FloorSpikesUp, wp110) + ns.ObjectGroupOn(gvar97) + ns.ObjectGroupOn(gvar99) + flag105 = true +} +func EnableSpikes1And3() { + ns.AudioEvent(ns.FloorSpikesUp, wp109) + ns.ObjectGroupOn(gvar96) + ns.ObjectGroupOn(gvar98) + flag105 = false +} +func SetTraitors() { + ns.ObjectGroupOff(gvar104) + ns.AudioEvent(ns.TeleportIn, wp107) + ns.AudioEvent(ns.TeleportIn, wp108) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp107), ns.GetWaypointY(wp107), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp108), ns.GetWaypointY(wp108), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp107), ns.GetWaypointY(wp107), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp108), ns.GetWaypointY(wp108), 0, 0) + ns.MoveObject(obj65, ns.GetWaypointX(wp107), ns.GetWaypointY(wp107)) + ns.MoveObject(obj66, ns.GetWaypointX(wp108), ns.GetWaypointY(wp108)) + ns.ObjectOn(obj65) + ns.ObjectOn(obj66) + ns.LockDoor(obj67) + ns.LockDoor(obj68) +} +func HaltMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Music(0, 100) +LABEL1: + return +} +func NewMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Music(1, 100) +LABEL1: + return +} +func TraitorDeath() { + ivar113 += 1 + if !(ivar113 >= 2) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 2000) +LABEL1: + return +} +func LockStairGate() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LockDoor(obj69) + ns.Music(28, 100) +LABEL1: + return +} +func MapInitialize() { + obj70 = ns.Object("SnakeHead1Mover") + obj71 = ns.Object("SnakeHead2Mover") + obj72 = ns.Object("SnakeHead3Mover") + obj73 = ns.Object("SnakeHead4Mover") + obj74 = ns.Object("SnakeHead5Mover") + obj75 = ns.Object("SnakeHead6Mover") + obj76 = ns.Object("SnakeHead7Mover") + obj77 = ns.Object("SnakeHead8Mover") + obj78 = ns.Object("SnakeHead9Mover") + obj79 = ns.Object("SnakeHead10Mover") + obj80 = ns.Object("SnakeHead11Mover") + obj81 = ns.Object("SnakeHead12Mover") + obj82 = ns.Object("Block1AMover") + obj83 = ns.Object("Block1BMover") + obj84 = ns.Object("Block2AMover") + obj85 = ns.Object("Block2BMover") + obj62 = ns.Object("ToLevelOneTP") + obj92 = ns.Object("ToThreeTP") + obj65 = ns.Object("Traitor1") + obj66 = ns.Object("Traitor2") + obj67 = ns.Object("TraitorDoor1") + obj68 = ns.Object("TraitorDoor2") + obj93 = ns.Object("Block1Trigger") + obj94 = ns.Object("Block2Trigger") + obj69 = ns.Object("StairGate") + obj86 = ns.Object("ChamberDoor1") + obj87 = ns.Object("ChamberDoor2") + obj88 = ns.Object("ChamberDoor2A") + obj89 = ns.Object("ChamberDoor2B") + obj90 = ns.Object("ChamberExitDoor1") + obj91 = ns.Object("ChamberExitDoor2") + gvar96 = ns.ObjectGroup("ChamberSpikes1") + gvar97 = ns.ObjectGroup("ChamberSpikes2") + gvar98 = ns.ObjectGroup("ChamberSpikes3") + gvar99 = ns.ObjectGroup("ChamberSpikes4") + gvar100 = ns.ObjectGroup("SnakeLetterMovers") + gvar101 = ns.ObjectGroup("Snake3Movers") + gvar102 = ns.ObjectGroup("Snake4Movers") + gvar103 = ns.ObjectGroup("ShowdownTriggers") + wp35 = ns.Waypoint("PlayerSounds") + wp106 = ns.Waypoint("Jiggle2WP") + wp107 = ns.Waypoint("Traitor1WP") + wp108 = ns.Waypoint("Traitor2WP") + wp109 = ns.Waypoint("Spikes1WP") + wp110 = ns.Waypoint("Spikes2WP") + obj4 = ns.Object("HON") + obj5 = ns.Object("HONBase") + obj6 = ns.Object("PowerCell1") + obj7 = ns.Object("PowerCell2") + obj8 = ns.Object("PowerCell3") + obj9 = ns.Object("PowerCell4") + obj10 = ns.Object("PowerCell5") + obj11 = ns.Object("PowerCell6") + obj12 = ns.Object("PowerCell7") + obj13 = ns.Object("PowerCell8") + obj14 = ns.Object("HeartLight1") + obj15 = ns.Object("HeartLight2") + obj16 = ns.Object("HeartLight3") + obj17 = ns.Object("HeartLight4") + obj18 = ns.Object("HeartLight5") + obj19 = ns.Object("HeartLight6") + obj20 = ns.Object("HeartLight7") + obj21 = ns.Object("HeartLight8") + obj22 = ns.Object("HeartLight9") + obj23 = ns.Object("HeartLight10") + obj24 = ns.Object("NewLight11") + obj25 = ns.Object("NewLight12") + obj26 = ns.Object("NewLight13") + obj27 = ns.Object("NewLight14") + obj28 = ns.Object("NewLight15") + obj29 = ns.Object("NewLight16") + obj30 = ns.Object("NewLight17") + obj31 = ns.Object("NewLight18") + obj32 = ns.Object("NewLight19") + obj33 = ns.Object("NewLight20") + gvar34 = ns.ObjectGroup("PowerCells") + gvar104 = ns.ObjectGroup("TraitorTriggers") + gvar36 = ns.WallGroup("HONWalls") + gvar37 = ns.WallGroup("HONExitWalls") + ns.ObjectGroupOff(gvar96) + ns.ObjectGroupOff(gvar97) + ns.ObjectGroupOff(gvar98) + ns.ObjectGroupOff(gvar99) + ns.ObjectOn(obj70) + ns.ObjectOn(obj71) + ns.ObjectOn(obj72) + ns.ObjectOn(obj73) + ns.ObjectOn(obj74) + ns.ObjectOn(obj75) + ns.ObjectOn(obj76) + ns.ObjectOn(obj77) + ns.ObjectOn(obj78) + ns.ObjectOn(obj79) + ns.ObjectOn(obj80) + ns.ObjectOn(obj81) + ns.ObjectGroupOn(gvar100) + ns.ObjectOn(obj82) + ns.ObjectOn(obj83) + ns.ObjectOn(obj84) + ns.ObjectOn(obj85) + ns.ObjectGroupOn(gvar101) + ns.ObjectGroupOn(gvar102) + ns.LockDoor(obj86) + ns.LockDoor(obj87) + ns.FrameTimer(2, HONSetup) + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war07h/dummy_test.go b/examples/war07h/dummy_test.go new file mode 100644 index 0000000..69f00e8 --- /dev/null +++ b/examples/war07h/dummy_test.go @@ -0,0 +1,6 @@ +package war07h + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war07h/war07h.go b/examples/war07h/war07h.go new file mode 100644 index 0000000..c43e7d5 --- /dev/null +++ b/examples/war07h/war07h.go @@ -0,0 +1,53 @@ +package war07h + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID +) + +func CreatureSetup() { + ns.SetOwner(ns.GetHost(), obj4) + ns.SetOwner(ns.GetHost(), obj5) + ns.Music(22, 100) + ns.FrameTimer(10, BriefingBegin) +} +func BriefingBegin() { + ns.StartDialog(obj4, ns.GetHost()) +} +func JandorBriefStart() { + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:JandorTalk01") +} +func JandorBriefEnd() { + ns.JournalEntry(ns.GetHost(), "GetHON", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.CancelDialog(obj4) +} +func LanceDialogStart() { + ns.TellStory(ns.SwordsmanHurt, "War01A.scr:Guard1Talk01") +} +func LanceDialogEnd() { +} +func MapInitialize() { + obj4 = ns.Object("Jandor") + obj5 = ns.Object("Lance") + obj6 = ns.Object("FacadeGate") + ns.StoryPic(obj4, "AirshipCaptainPic") + ns.SetDialog(obj4, ns.NORMAL, JandorBriefStart, JandorBriefEnd) + ns.LockDoor(obj6) + ns.StartupScreen(7) + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/war08a/dummy_test.go b/examples/war08a/dummy_test.go new file mode 100644 index 0000000..215c0cb --- /dev/null +++ b/examples/war08a/dummy_test.go @@ -0,0 +1,6 @@ +package war08a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war08a/war08a.go b/examples/war08a/war08a.go new file mode 100644 index 0000000..a0c32c2 --- /dev/null +++ b/examples/war08a/war08a.go @@ -0,0 +1,1494 @@ +package war08a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + gvar30 int + gvar31 int + gvar32 int + gvar33 int + gvar34 int + gvar35 int + gvar36 int + gvar37 int + gvar38 int + gvar39 int + gvar40 int + gvar41 int + ivar42 int + gvar43 int + ivar44 int + ivar45 int + flag46 bool + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + obj82 ns.ObjectID + obj83 ns.ObjectID + obj84 ns.ObjectID + obj85 ns.ObjectID + obj86 ns.ObjectID + obj87 ns.ObjectID + wp88 ns.WaypointID + wp89 ns.WaypointID + gvar90 int + gvar91 int + gvar92 int + gvar93 int + gvar94 int + gvar95 int + gvar96 int + gvar97 int + ivar98 int + flag99 bool + flag100 bool + flag101 bool + flag102 bool + flag103 bool + flag104 bool + flag105 bool + flag106 bool + flag107 bool + obj108 ns.ObjectID + gvar109 int + obj110 ns.ObjectID + obj111 ns.ObjectID + obj112 ns.ObjectID + obj113 ns.ObjectID + obj114 ns.ObjectID + obj115 ns.ObjectID + obj116 ns.ObjectID + obj117 ns.ObjectID + obj118 ns.ObjectID + obj119 ns.ObjectID + obj120 [4]ns.ObjectID + gvar121 int + wp122 ns.WaypointID + wp123 ns.WaypointID + wp124 ns.WaypointID + wp125 ns.WaypointID + gvar126 ns.ObjectGroupID + gvar127 ns.ObjectGroupID + gvar128 ns.WallGroupID + ivar129 int + flag130 bool +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + gvar9 = 5 + gvar10 = 6 + gvar11 = 7 + gvar12 = 8 + gvar13 = 9 + gvar14 = 10 + gvar15 = 11 + gvar16 = 12 + gvar17 = 13 + gvar18 = 14 + gvar19 = 15 + gvar20 = 16 + gvar21 = 17 + gvar22 = 18 + gvar23 = 19 + gvar24 = 20 + gvar25 = 21 + gvar26 = 22 + gvar27 = 23 + gvar28 = 24 + gvar29 = 25 + gvar30 = 26 + gvar31 = gvar14 + gvar32 = gvar11 + gvar33 = gvar8 + gvar34 = gvar15 + gvar35 = gvar19 + gvar36 = gvar23 + gvar37 = gvar24 + gvar38 = gvar25 + gvar39 = gvar26 + gvar40 = gvar27 + gvar41 = gvar4 + ivar42 = 200 + gvar43 = 2 + ivar44 = 0 + ivar45 = 0 + flag46 = false + gvar90 = 0 + gvar91 = 1 + gvar92 = 2 + gvar93 = 3 + gvar94 = 4 + gvar95 = 5 + gvar96 = 6 + gvar97 = gvar90 + ivar98 = 0 + flag99 = false + flag100 = false + flag101 = false + flag102 = false + flag103 = false + flag104 = false + flag105 = true + flag106 = false + flag107 = false + ivar129 = 60 + flag130 = true +} +func JandorStart() { + var v0 int + v0 = gvar41 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + if v0 == gvar7 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War08a:CaptainProd") + goto LABEL5 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War08a:CaptainProd") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:JandorB") + goto LABEL5 +LABEL4: + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(45, ExitToSwamp) + goto LABEL5 +LABEL5: + return +} +func JandorEnd() { + var v0 int + v0 = gvar41 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + if v0 == gvar7 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.JournalEntry(ns.GetHost(), "Chapter8LocateAldwyn", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + gvar41 = gvar5 + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + gvar41 = gvar7 + goto LABEL5 +LABEL4: + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(45, ExitToSwamp) + goto LABEL5 +LABEL5: + return +} +func JacobDialogStart() { + var ( + v0 int + v1 int + v2 int + ) + v2 = gvar40 + if v2 == gvar27 { + goto LABEL1 + } + if v2 == gvar28 { + goto LABEL2 + } + if v2 == gvar29 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Random(1, 3) + v1 = v0 + if v1 == 1 { + goto LABEL5 + } + if v1 == 2 { + goto LABEL6 + } + if v1 == 3 { + goto LABEL7 + } + goto LABEL8 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk01") + goto LABEL8 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk02") + goto LABEL8 +LABEL7: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk03") + goto LABEL8 +LABEL8: + goto LABEL4 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk04") + goto LABEL4 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk05") + goto LABEL4 +LABEL4: + return +} +func JacobDialogEnd() { + var v0 int + v0 = gvar40 + if v0 == gvar28 { + goto LABEL1 + } + if v0 == gvar29 { + goto LABEL2 + } + if v0 == gvar30 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.Frozen(ns.GetHost(), false) + flag46 = false + goto LABEL4 +LABEL2: + ns.Frozen(ns.GetHost(), false) + flag46 = false + goto LABEL4 +LABEL3: + ns.CancelDialog(obj75) + ns.Frozen(ns.GetHost(), false) + goto LABEL4 +LABEL4: + return +} +func ResetJacobDialog() { + if !ns.IsCaller(obj75) { + goto LABEL1 + } + if gvar40 != gvar30 { + goto LABEL1 + } + gvar40 = gvar27 + flag46 = false + ns.SetDialog(obj75, ns.NORMAL, JacobDialogStart, JacobDialogEnd) + ivar45 = 0 + ns.ObjectOff(obj77) +LABEL1: + return +} +func MorganInjured() { + var v0 int + if flag46 { + goto LABEL1 + } + flag46 = true + ivar45 += 1 + v0 = ivar45 + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL1 +LABEL2: + gvar40 = gvar28 + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj75) + ns.LookAtObject(obj75, ns.GetHost()) + if !(ns.CurrentHealth(obj75) > 0) { + goto LABEL5 + } + ns.StartDialog(obj75, ns.GetHost()) +LABEL5: + goto LABEL1 +LABEL3: + gvar40 = gvar29 + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj75) + ns.LookAtObject(obj75, ns.GetHost()) + if !(ns.CurrentHealth(obj75) > 0) { + goto LABEL6 + } + ns.StartDialog(obj75, ns.GetHost()) +LABEL6: + goto LABEL1 +LABEL4: + gvar40 = gvar30 + ns.CancelDialog(obj75) + ns.ClearOwner(obj75) + ns.AggressionLevel(obj75, 0.83) + if !(ns.CurrentHealth(obj75) > 0) { + goto LABEL7 + } + ns.Attack(obj75, ns.GetHost()) +LABEL7: + goto LABEL1 +LABEL1: + return +} +func PlayerFlee() { + if gvar40 != gvar30 { + goto LABEL1 + } + ns.ObjectOn(obj77) + ns.SetOwner(ns.GetHost(), obj75) + ns.AggressionLevel(obj75, 0) + ns.CreatureGuard(obj75, ns.GetWaypointX(wp79), ns.GetWaypointY(wp79), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func HenrickDialogStart() { + var v0 int + v0 = gvar32 + if v0 == gvar11 { + goto LABEL1 + } + if v0 == gvar12 { + goto LABEL2 + } + if v0 == gvar13 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj48, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSalesPitchA") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj48, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSalesPitchB") + goto LABEL4 +LABEL3: + ns.LookAtObject(obj48, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNoMoreWolves") + goto LABEL4 +LABEL4: + return +} +func HenrickDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + v6 int + v7 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v7 = gvar32 + if v7 == gvar11 { + goto LABEL1 + } + if v7 == gvar12 { + goto LABEL2 + } + if v7 == gvar13 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v1 = ns.GetAnswer(obj48) + v5 = v1 + if v5 == v2 { + goto LABEL5 + } + if v5 == v3 { + goto LABEL6 + } + if v5 == v4 { + goto LABEL7 + } + goto LABEL8 +LABEL5: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar42) { + goto LABEL9 + } + ns.SetDialog(obj48, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNotEnoughGold") + goto LABEL10 +LABEL9: + ns.ChangeGold(ns.GetHost(), -ivar42) + gvar32 = gvar12 + ReleaseCharmedWolf(ivar44) + ivar44 += 1 + ns.SetDialog(obj48, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSaleSuccessful") +LABEL10: + goto LABEL8 +LABEL6: + goto LABEL8 +LABEL7: + goto LABEL8 +LABEL8: + goto LABEL4 +LABEL2: + v1 = ns.GetAnswer(obj48) + v6 = v1 + if v6 == v2 { + goto LABEL11 + } + if v6 == v3 { + goto LABEL12 + } + if v6 == v4 { + goto LABEL13 + } + goto LABEL14 +LABEL11: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar42) { + goto LABEL15 + } + ns.SetDialog(obj48, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNotEnoughGold") + goto LABEL16 +LABEL15: + ns.ChangeGold(ns.GetHost(), -ivar42) + ReleaseCharmedWolf(ivar44) + ivar44 += 1 + ns.SetDialog(obj48, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSaleSuccessful") + if !(ivar44 >= 2) { + goto LABEL16 + } + gvar32 = gvar13 + ns.SetDialog(obj48, ns.NORMAL, HenrickDialogStart, HenrickDialogEnd) +LABEL16: + goto LABEL14 +LABEL12: + goto LABEL14 +LABEL13: + goto LABEL14 +LABEL14: + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func ResetHenrickDialogChoice() { + ns.SetDialog(obj48, ns.YESNO, HenrickDialogStart, HenrickDialogEnd) +} +func DrunkDialogStart() { + ns.LookAtObject(obj49, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:DrunkGreeting") +} +func DrunkDialogEnd() { +} +func GatekeeperDialogStart() { + var v0 int + ns.LookAtObject(obj52, ns.GetHost()) + v0 = gvar36 + if v0 == gvar23 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con02a:GatekeeperWaiting") + goto LABEL2 +LABEL2: + return +} +func GatekeeperDialogEnd() { +} +func Gatekeeper2DialogStart() { + var v0 int + ns.LookAtObject(obj63, ns.GetHost()) + v0 = gvar37 + if v0 == gvar24 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Wiz08a:Guard01Greet") + goto LABEL2 +LABEL2: + return +} +func Gatekeeper2DialogEnd() { +} +func Gatekeeper3DialogStart() { + var v0 int + ns.LookAtObject(obj64, ns.GetHost()) + v0 = gvar38 + if v0 == gvar25 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War08a:Guard02Greet") + goto LABEL2 +LABEL2: + return +} +func Gatekeeper3DialogEnd() { +} +func MayorDialogStart() { + var ( + v0 int + v1 int + ) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj55) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorPre") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorBye") + goto LABEL3 +LABEL3: + return +} +func MayorDialogEnd() { + ns.Frozen(ns.GetHost(), false) +} +func MayorsGuardDialogStart() { + var v0 int + v0 = gvar31 + if v0 == gvar14 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.LookAtObject(obj53, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorsGuardIntro") + goto LABEL2 +LABEL2: + return +} +func MayorsGuardDialogEnd() { +} +func AldwinDialogStart() { + var v0 int + v0 = gvar33 + if v0 == gvar8 { + goto LABEL1 + } + if v0 == gvar9 { + goto LABEL2 + } + if v0 == gvar10 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj54, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08a:AldwynGreet") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj54, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08a:AldwynProd") + goto LABEL4 +LABEL3: + ns.LookAtObject(obj54, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con08:AldwynProd") + goto LABEL4 +LABEL4: + return +} +func AldwinDialogEnd() { + var v0 int + v0 = gvar33 + if v0 == gvar8 { + goto LABEL1 + } + if v0 == gvar9 { + goto LABEL2 + } + if v0 == gvar10 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.Pickup(ns.GetHost(), obj50) + ns.PrintToAll("GeneralPrint:GainedKey") + gvar33 = gvar9 + ns.JournalEdit(ns.GetHost(), "Chapter8LocateAldwyn", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8IxPriest", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + goto LABEL4 +LABEL2: + gvar33 = gvar9 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func BridgeGuardDialogStart() { + var v0 int + v0 = gvar39 + if v0 == gvar26 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.LookAtObject(obj65, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:RandomSay") + goto LABEL2 +LABEL2: + return +} +func BridgeGuardDialogEnd() { + var v0 int + v0 = gvar39 + if v0 == gvar26 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + goto LABEL2 +LABEL2: + return +} +func Maiden1DialogStart() { + ns.LookAtObject(obj67, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:BarMaiden") +} +func Maiden1DialogEnd() { +} +func Maiden2DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj68, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj68) + ns.LookAtObject(ns.GetHost(), obj68) + ns.LookAtObject(obj68, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War03b:Maiden1") +} +func Maiden2DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj68, false) + ns.Wander(obj68) +} +func Maiden3DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj69, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj69) + ns.LookAtObject(ns.GetHost(), obj69) + ns.LookAtObject(obj69, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaidenTalk05") +} +func Maiden3DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj69, false) + ns.Wander(obj69) +} +func Maiden4DialogStart() { + var ( + v0 int + v1 int + ) + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj70, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj70) + ns.LookAtObject(ns.GetHost(), obj70) + ns.LookAtObject(obj70, ns.GetHost()) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownswoman1") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownswoman3") + goto LABEL3 +LABEL3: + return +} +func Maiden4DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj70, false) + ns.Wander(obj70) +} +func Townsman1DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj72, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj72) + ns.LookAtObject(ns.GetHost(), obj72) + ns.LookAtObject(obj72, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownsman3") +} +func Townsman1DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj72, false) + ns.Wander(obj72) +} +func Townsman2DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj73, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj73) + ns.LookAtObject(ns.GetHost(), obj73) + ns.LookAtObject(obj73, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:AlbiTalk01") +} +func Townsman2DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj73, false) + ns.Wander(obj73) +} +func Townsman3DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj74, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj74) + ns.LookAtObject(ns.GetHost(), obj74) + ns.LookAtObject(obj74, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxRumor03") +} +func Townsman3DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj74, false) + ns.Wander(obj74) +} +func ReleaseCharmedWolf(a1 int) { + var v0 int + v0 = a1 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.WallOpen(ns.Wall(128, 106)) + ns.EnchantOff(obj120[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj120[a1], ns.GetHost()) + ns.PauseObject(obj120[a1], 30) + ns.AggressionLevel(obj120[a1], 0.83) + ns.MakeFriendly(obj120[a1]) + ns.BecomePet(obj120[a1]) + goto LABEL5 +LABEL2: + ns.WallOpen(ns.Wall(130, 104)) + ns.EnchantOff(obj120[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj120[a1], ns.GetHost()) + ns.PauseObject(obj120[a1], 30) + ns.AggressionLevel(obj120[a1], 0.83) + ns.MakeFriendly(obj120[a1]) + ns.BecomePet(obj120[a1]) + goto LABEL5 +LABEL3: + ns.WallOpen(ns.Wall(132, 102)) + ns.EnchantOff(obj120[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj120[a1], ns.GetHost()) + ns.PauseObject(obj120[a1], 30) + ns.AggressionLevel(obj120[a1], 0.83) + ns.MakeFriendly(obj120[a1]) + ns.BecomePet(obj120[a1]) + goto LABEL5 +LABEL4: + ns.WallOpen(ns.Wall(134, 100)) + ns.EnchantOff(obj120[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj120[a1], ns.GetHost()) + ns.PauseObject(obj120[a1], 30) + ns.AggressionLevel(obj120[a1], 0.83) + ns.MakeFriendly(obj120[a1]) + ns.BecomePet(obj120[a1]) + goto LABEL5 +LABEL5: + return +} +func InitializeDialogs() { + ns.StoryPic(obj48, "HenrickPic") + ns.StoryPic(obj49, "DrunkPic") + ns.StoryPic(obj51, "Townsman1Pic") + ns.StoryPic(obj52, "IxGuard2Pic") + ns.StoryPic(obj53, "Warrior3Pic") + ns.StoryPic(obj55, "TheogrinPic") + ns.StoryPic(obj54, "AldwynPic") + ns.StoryPic(obj63, "IxGuard2Pic") + ns.StoryPic(obj64, "IxGuard1Pic") + ns.StoryPic(obj65, "Townsman3Pic") + ns.StoryPic(obj67, "MaidenPic") + ns.StoryPic(obj68, "MaidenPic2") + ns.StoryPic(obj69, "MaidenPic3") + ns.StoryPic(obj70, "MaidenPic4") + ns.StoryPic(obj72, "MalePic4") + ns.StoryPic(obj73, "MalePic11") + ns.StoryPic(obj74, "MalePic12") + ns.StoryPic(obj47, "AirshipCaptainPic") + ns.StoryPic(obj75, "WardenPic") + ns.SetDialog(obj75, ns.NORMAL, JacobDialogStart, JacobDialogEnd) + ns.SetDialog(obj48, ns.YESNO, HenrickDialogStart, HenrickDialogEnd) + ns.SetDialog(obj49, ns.NORMAL, DrunkDialogStart, DrunkDialogEnd) + ns.SetDialog(obj63, ns.NORMAL, Gatekeeper2DialogStart, Gatekeeper2DialogEnd) + ns.SetDialog(obj64, ns.NORMAL, Gatekeeper3DialogStart, Gatekeeper3DialogEnd) + ns.SetDialog(obj53, ns.NORMAL, MayorsGuardDialogStart, MayorsGuardDialogEnd) + ns.SetDialog(obj54, ns.NORMAL, AldwinDialogStart, AldwinDialogEnd) + ns.SetDialog(obj65, ns.NORMAL, BridgeGuardDialogStart, BridgeGuardDialogEnd) + ns.SetDialog(obj67, ns.NORMAL, Maiden1DialogStart, Maiden1DialogEnd) + ns.SetDialog(obj68, ns.NORMAL, Maiden2DialogStart, Maiden2DialogEnd) + ns.SetDialog(obj69, ns.NORMAL, Maiden3DialogStart, Maiden3DialogEnd) + ns.SetDialog(obj70, ns.NORMAL, Maiden4DialogStart, Maiden4DialogEnd) + ns.SetDialog(obj72, ns.NORMAL, Townsman1DialogStart, Townsman1DialogEnd) + ns.SetDialog(obj73, ns.NORMAL, Townsman2DialogStart, Townsman2DialogEnd) + ns.SetDialog(obj74, ns.NORMAL, Townsman3DialogStart, Townsman3DialogEnd) +} +func InitializeSecondaryDialogs() { + gvar41 = gvar6 +} +func NullDialogStart() { +} +func ExitToSwamp() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(ns.Waypoint("SwampExitWP")), ns.GetWaypointY(ns.Waypoint("SwampExitWP"))) +} +func StartCaptainConversation() { + ns.SetDialog(obj47, ns.NORMAL, JandorStart, JandorEnd) + ns.StartDialog(obj47, ns.GetHost()) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func GoToMineSEG2() { + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp80), ns.GetWaypointY(wp80)) +} +func GoToMine() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Blind() + ns.FrameTimer(60, GoToMineSEG2) +LABEL1: + return +} +func GoToCaveSEG2() { + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp81), ns.GetWaypointY(wp81)) +} +func GoToCave() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Blind() + ns.FrameTimer(60, GoToCaveSEG2) +LABEL1: + return +} +func InversionInit() { + obj82 = ns.Object("Teacher") + obj83 = ns.Object("Apprentice") + obj84 = ns.Object("InvertSpell") + obj85 = ns.Object("LessonGate1") + obj86 = ns.Object("LessonGate2") + obj87 = ns.Object("ApprenticeTrigger") + wp88 = ns.Waypoint("PlayerSounds") + wp89 = ns.Waypoint("ApprenticeWP") + ns.StoryPic(obj82, "WizardGuard1Pic") + ns.SetDialog(obj82, ns.YESNO, TeacherStart, TeacherEnd) + ns.LockDoor(obj85) + ns.LockDoor(obj86) + ns.ObjectOff(obj87) + ns.FrameTimer(1, InversionOwnObject) +} +func InversionOwnObject() { + ns.SetOwner(ns.GetHost(), obj82) + ns.Enchant(obj83, ns.ENCHANT_INVULNERABLE, 0) + ns.Enchant(obj82, ns.ENCHANT_ANCHORED, 0) + ns.Enchant(obj83, ns.ENCHANT_ANCHORED, 0) +} +func TeacherStart() { + var v0 int + v0 = gvar97 + if v0 == gvar90 { + goto LABEL1 + } + if v0 == gvar91 { + goto LABEL2 + } + if v0 == gvar92 { + goto LABEL3 + } + if v0 == gvar93 { + goto LABEL4 + } + if v0 == gvar94 { + goto LABEL5 + } + if v0 == gvar95 { + goto LABEL6 + } + if v0 == gvar96 { + goto LABEL7 + } + goto LABEL8 +LABEL1: + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj82) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk01") + goto LABEL8 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk04") + goto LABEL8 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk02") + goto LABEL8 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk03") + goto LABEL8 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk05") + goto LABEL8 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk04a") + goto LABEL8 +LABEL7: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk06") + goto LABEL8 +LABEL8: + return +} +func TeacherEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + v6 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v6 = gvar97 + if v6 == gvar90 { + goto LABEL1 + } + if v6 == gvar91 { + goto LABEL2 + } + if v6 == gvar92 { + goto LABEL3 + } + if v6 == gvar93 { + goto LABEL4 + } + if v6 == gvar94 { + goto LABEL5 + } + if v6 == gvar95 { + goto LABEL6 + } + if v6 == gvar96 { + goto LABEL7 + } + goto LABEL8 +LABEL1: + v1 = ns.GetAnswer(obj82) + v5 = v1 + if v5 == v2 { + goto LABEL9 + } + if v5 == v3 { + goto LABEL10 + } + if v5 == v4 { + goto LABEL11 + } + goto LABEL12 +LABEL9: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < 100) { + goto LABEL13 + } + ns.SetDialog(obj82, ns.NORMAL, TeacherStart, TeacherEnd) + gvar97 = gvar91 + ns.StartDialog(obj82, ns.GetHost()) + goto LABEL12 + goto LABEL10 +LABEL13: + ns.ChangeGold(ns.GetHost(), -100) + ns.UnlockDoor(obj85) + ns.UnlockDoor(obj86) + ns.SetDialog(obj82, ns.NORMAL, TeacherStart, TeacherEnd) + gvar97 = gvar92 + ns.StartDialog(obj82, ns.GetHost()) + goto LABEL12 +LABEL10: + ns.Frozen(ns.GetHost(), false) + gvar97 = gvar90 + ns.SetDialog(obj82, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL12 +LABEL11: + ns.Frozen(ns.GetHost(), false) + gvar97 = gvar90 + ns.SetDialog(obj82, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL12 +LABEL12: + goto LABEL8 +LABEL2: + ns.Frozen(ns.GetHost(), false) + gvar97 = gvar90 + ns.SetDialog(obj82, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL3: + ns.CancelDialog(obj82) + ns.Frozen(ns.GetHost(), false) + ns.Pickup(ns.GetHost(), obj84) + goto LABEL8 +LABEL4: + ns.CancelDialog(obj82) + flag103 = false + goto LABEL8 +LABEL5: + ns.UnlockDoor(obj58) + ns.UnlockDoor(obj59) + gvar97 = gvar96 + ns.SetDialog(obj82, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL6: + ns.UnlockDoor(obj58) + ns.UnlockDoor(obj59) + gvar97 = gvar96 + ns.SetDialog(obj82, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL7: + gvar97 = gvar96 + ns.SetDialog(obj82, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL8: + return +} +func Phoneme1() { + if flag103 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj83) > 0) { + goto LABEL1 + } + ns.PrintToAll("Phoneme1") + ns.MoveWaypoint(wp88, 1326, 2493) + ns.AudioEvent(ns.SpellPhonemeDown, wp88) + ns.FrameTimer(10, Phoneme2) +LABEL1: + return +} +func Phoneme2() { + if flag103 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj83) > 0) { + goto LABEL1 + } + ns.PrintToAll("Phoneme2") + ns.AudioEvent(ns.SpellPhonemeDown, wp88) + ns.FrameTimer(10, Phoneme3) +LABEL1: + return +} +func Phoneme3() { + if flag103 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj83) > 0) { + goto LABEL1 + } + ns.PrintToAll("Phoneme3") + ns.AudioEvent(ns.SpellPhonemeDown, wp88) + ns.FrameTimer(10, CastSpells) +LABEL1: + return +} +func LessonBegin() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if gvar97 != gvar92 { + goto LABEL1 + } + if !flag105 { + goto LABEL2 + } + ns.Move(obj83, wp89) + flag105 = false +LABEL2: + if !(flag99 == false && flag104 == true) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LookAtObject(obj83, ns.GetHost()) + flag99 = true + ns.LockDoor(obj58) + ns.LockDoor(obj59) + ns.SecondTimer(1, Phoneme1) +LABEL1: + return +} +func CastSpells() { + if flag103 { + goto LABEL1 + } + if !(ivar98 < 4) { + goto LABEL2 + } + ns.PrintToAll("Casting Spell") + ns.CastSpellObjectLocation(ns.SPELL_SLOW, obj83, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.Enchant(obj83, ns.ENCHANT_INVULNERABLE, 0) +LABEL2: + if ivar98 != 4 { + goto LABEL3 + } + ns.PrintToAll("CastingSpell") + ns.EnchantOff(obj83, ns.ENCHANT_INVULNERABLE) + ns.CastSpellObjectLocation(ns.SPELL_MAGIC_MISSILE, obj83, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL3: + ivar98 += 1 + if !(ivar98 < 5) { + goto LABEL4 + } + ns.SecondTimer(3, Phoneme1) + goto LABEL1 +LABEL4: + flag100 = true + if !flag102 { + goto LABEL5 + } + gvar97 = gvar94 + ns.SetDialog(obj82, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj82, ns.GetHost()) + goto LABEL1 +LABEL5: + gvar97 = gvar95 + ns.SetDialog(obj82, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj82, ns.GetHost()) +LABEL1: + return +} +func CheckApprentice() { + if !ns.HasEnchant(obj83, ns.ENCHANT_SLOWED) { + goto LABEL1 + } + ns.ObjectOff(obj87) + flag103 = true + gvar97 = gvar93 + flag102 = true + if !(ivar98 > 2) { + goto LABEL2 + } + ivar98 = 2 +LABEL2: + ns.SetDialog(obj82, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj82, ns.GetHost()) +LABEL1: + if !(ns.CurrentHealth(obj83) <= 0) { + goto LABEL3 + } + ns.ObjectOff(ns.GetTrigger()) + flag102 = true +LABEL3: + return +} +func ApprenticeDie() { + ns.AudioEvent(ns.HumanMaleHurtHeavy, wp88) +} +func ApprenticeReport() { + ns.CreatureGuard(obj83, ns.GetWaypointX(wp89), ns.GetWaypointY(wp89), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.ObjectOn(obj87) + flag104 = true +} +func OwnObjects() { + ns.GroupSetOwner(ns.GetHost(), gvar126) + ns.SetOwner(ns.GetHost(), obj48) + ns.SetOwner(ns.GetHost(), obj108) + ns.GroupSetOwner(ns.GetHost(), gvar127) + ns.SetOwner(ns.GetHost(), obj49) + ns.SetOwner(ns.GetHost(), obj67) + ns.SetOwner(ns.GetHost(), obj68) + ns.SetOwner(ns.GetHost(), obj69) + ns.SetOwner(ns.GetHost(), obj70) + ns.SetOwner(ns.GetHost(), obj47) + ns.SetOwner(ns.GetHost(), obj75) + ns.StoryPic(obj51, "ShopKeeperBrownPic") +} +func DisableElevators() { + ns.ObjectOff(obj60) + ns.ObjectOff(obj66) +} +func MapInitialize() { + var v0 int + obj48 = ns.Object("Henrick") + obj108 = ns.Object("HenricksWolf") + obj120[0] = ns.Object("CharmedWolf01") + obj120[1] = ns.Object("CharmedWolf02") + obj120[2] = ns.Object("CharmedWolf03") + obj120[3] = ns.Object("CharmedWolf04") + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL1 + } + ns.Enchant(obj120[v0], ns.ENCHANT_INVULNERABLE, 0) + v0 += 1 + } +LABEL1: + obj49 = ns.Object("Drunk") + obj54 = ns.Object("Aldwyn") + obj52 = ns.Object("Geoff") + obj63 = ns.Object("Ryan") + obj64 = ns.Object("Ed") + obj55 = ns.Object("Mayor_Theogrin") + obj53 = ns.Object("Mayor's_Guard") + obj51 = ns.Object("Barkeeper") + obj65 = ns.Object("Bridge_Guard") + obj47 = ns.Object("Jandor") + obj75 = ns.Object("Jacob") + obj76 = ns.Object("Morgan") + obj119 = ns.Object("CaveDoor") + obj116 = ns.Object("MorganDoor") + obj56 = ns.Object("MayorGate1") + obj57 = ns.Object("MayorGate2") + obj58 = ns.Object("ContestGate1") + obj59 = ns.Object("ContestGate2") + obj112 = ns.Object("CemDoorL") + obj113 = ns.Object("CemDoorR") + obj110 = ns.Object("BasementDoor") + obj60 = ns.Object("AldwinElevator") + obj61 = ns.Object("RightTownGate") + obj62 = ns.Object("LeftTownGate") + obj72 = ns.Object("Bryan") + obj73 = ns.Object("Clyde") + obj74 = ns.Object("Tommy") + obj66 = ns.Object("MagicShopElevator") + obj67 = ns.Object("Joyce") + obj68 = ns.Object("Julie") + obj69 = ns.Object("Tanya") + obj70 = ns.Object("Gretchen") + obj50 = ns.Object("BlueKey") + obj71 = ns.Object("AldwynFireplace") + obj77 = ns.Object("JacobTrigger") + obj111 = ns.Object("AldwynsDoor") + obj114 = ns.Object("TempDoorL") + obj115 = ns.Object("TempDoorR") + obj117 = ns.Object("Mystic") + obj118 = ns.Object("Mystic2") + wp78 = ns.Waypoint("AldwynHome") + wp122 = ns.Waypoint("AldwynStorage") + wp79 = ns.Waypoint("JacobWP") + wp123 = ns.Waypoint("MysticWP") + wp124 = ns.Waypoint("MysticStorage") + wp125 = ns.Waypoint("FaceWP") + gvar126 = ns.ObjectGroup("NPC's") + gvar127 = ns.ObjectGroup("CharmedWolves") + gvar128 = ns.WallGroup("MagicShopElevatorWalls") + wp80 = ns.Waypoint("MineExitWP") + wp81 = ns.Waypoint("CaveExitWP") + ns.Wander(obj72) + ns.Wander(obj73) + ns.Wander(obj74) + ns.Wander(obj68) + ns.Wander(obj69) + ns.LockDoor(obj56) + ns.LockDoor(obj57) + ns.LockDoor(obj112) + ns.LockDoor(obj113) + ns.LockDoor(obj61) + ns.LockDoor(obj62) + ns.LockDoor(obj116) + ns.LockDoor(obj119) + InversionInit() + InitializeDialogs() + OwnObjects() + ns.StartupScreen(8) + ns.FrameTimer(5, StartCaptainConversation) + ns.FrameTimer(35, DisableElevators) +} +func MapEntry() { + var v0 int + v0 = ns.GetQuestStatus("Chapter8:HasWeirdling") + if v0 != 1 { + goto LABEL1 + } + flag107 = true + ns.MoveObject(obj54, ns.GetWaypointX(wp122), ns.GetWaypointY(wp122)) + ns.LockDoor(obj111) + ns.LockDoor(obj114) + ns.LockDoor(obj115) + InitializeSecondaryDialogs() + ns.SetShopkeeperText(obj117, "War08a:Mystic") + ns.CancelDialog(obj63) + ns.CancelDialog(obj64) +LABEL1: + ns.Music(15, 100) + ns.UnBlind() +} +func DebugOn() { + flag106 = true + ns.PrintToAll("Debug mode is enabled.") +} +func DebugOff() { + flag106 = false + ns.PrintToAll("Debug mode has been disabled.") +} +func OpenCaveDoor() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.UnlockDoor(obj119) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + return +} +func EnableRandomBump() { + flag130 = true +} +func RandomBump() { + if !(ns.IsCaller(ns.GetHost()) && flag130) { + goto LABEL1 + } + ns.Chat(ns.GetTrigger(), "Con02a:RandomBump") + flag130 = false + ns.FrameTimer(ivar129, EnableRandomBump) +LABEL1: + return +} +func RestAwhile() { + var v0 int + v0 = ns.Random(60, 120) + ns.PauseObject(ns.GetCaller(), v0) +} +func OpenMagicShopElevatorWalls() { + ns.WallGroupOpen(gvar128) +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, ns.Waypoint("WellWP")) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war08b/dummy_test.go b/examples/war08b/dummy_test.go new file mode 100644 index 0000000..8beb33c --- /dev/null +++ b/examples/war08b/dummy_test.go @@ -0,0 +1,6 @@ +package war08b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war08b/war08b.go b/examples/war08b/war08b.go new file mode 100644 index 0000000..cb7a086 --- /dev/null +++ b/examples/war08b/war08b.go @@ -0,0 +1,263 @@ +package war08b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + wp8 ns.WaypointID + wp9 ns.WaypointID + gvar10 ns.ObjectGroupID + wp11 ns.WaypointID + wp12 ns.WaypointID + wp13 ns.WaypointID + wp14 ns.WaypointID + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + flag20 bool + flag21 bool +) + +func init() { + gvar15 = 0 + gvar16 = 1 + gvar17 = 2 + gvar18 = 3 + gvar19 = gvar15 + flag20 = false + flag21 = false +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func GoToIxSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj4, false) + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp8), ns.GetWaypointY(wp8)) +} +func GoToIx() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Blind() + ns.FrameTimer(60, GoToIxSEG2) +LABEL1: + return +} +func GoToTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp9), ns.GetWaypointY(wp9)) +} +func GoToTemple() { + ns.Frozen(ns.GetHost(), true) + ns.CancelDialog(obj7) + ns.Blind() + ns.FrameTimer(60, GoToTempleSEG2) +} +func OwnObjects() { + ns.SetOwner(ns.GetHost(), obj7) +} +func MapInitialize() { + obj4 = ns.Object("Bear01") + obj5 = ns.Object("Bear02") + obj6 = ns.Object("Bear03") + obj7 = ns.Object("IxPriest") + gvar10 = ns.ObjectGroup("Fish") + wp8 = ns.Waypoint("IxExitWP") + wp11 = ns.Waypoint("TempleExtWP") + wp12 = ns.Waypoint("TempleIntWP") + wp9 = ns.Waypoint("TempleExitWP") + wp13 = ns.Waypoint("PriestWP") + wp14 = ns.Waypoint("PriestLookWP") + ns.GroupWander(gvar10) + ns.FrameTimer(1, OwnObjects) +} +func MapEntry() { + ns.UnBlind() + ns.Music(22, 100) +} +func EnterTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj4, false) + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp12), ns.GetWaypointY(wp12)) + ns.UnBlind() +} +func EnterTemple() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Blind() + ns.FrameTimer(60, EnterTempleSEG2) +} +func LeaveTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.UnBlind() +} +func LeaveTemple() { + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(60, LeaveTempleSEG2) +} +func StayAway() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func NoMonsters() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func BearAttack() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.CreatureFollow(obj5, obj4) + ns.CreatureFollow(obj6, obj4) +LABEL1: + return +} +func BearIdle() { + ns.GoBackHome(ns.GetTrigger()) +} +func PriestSetPieceSEG2() { + ns.CreatureFollow(obj7, ns.GetHost()) + ns.FrameTimer(75, PriestSetPieceSEG3) +} +func PriestSetPieceSEG3() { + ns.StoryPic(obj7, "IxPriestPic") + ns.SetDialog(obj7, ns.NEXT, PriestDialogStart, PriestDialogEnd) + ns.StartDialog(obj7, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj7) +} +func PriestDialogStart() { + var v0 int + v0 = gvar19 + if v0 == gvar15 { + goto LABEL1 + } + if v0 == gvar16 { + goto LABEL2 + } + if v0 == gvar17 { + goto LABEL3 + } + if v0 == gvar18 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestGreet") + goto LABEL5 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd2") + goto LABEL5 +LABEL4: + ns.SetDialog(obj7, ns.NORMAL, PriestDialogStart, PriestDialogEnd) + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd3") + goto LABEL5 +LABEL5: + return +} +func PriestDialogEnd() { + var v0 int + v0 = gvar19 + if v0 == gvar15 { + goto LABEL1 + } + if v0 == gvar16 { + goto LABEL2 + } + if v0 == gvar17 { + goto LABEL3 + } + if v0 == gvar18 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar19 = gvar16 + PriestDialogStart() + goto LABEL5 +LABEL2: + gvar19 = gvar17 + PriestDialogStart() + goto LABEL5 +LABEL3: + gvar19 = gvar18 + PriestDialogStart() + goto LABEL5 +LABEL4: + if flag21 { + goto LABEL6 + } + flag21 = true + ns.JournalEdit(ns.GetHost(), "Chapter8IxPriest", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8Wierdling", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.WideScreen(false) + ns.CreatureGuard(obj7, ns.GetWaypointX(wp13), ns.GetWaypointY(wp13), ns.GetWaypointX(wp14), ns.GetWaypointY(wp14), 0) + ns.FrameTimer(60, ReleasePlayer) +LABEL6: + goto LABEL5 +LABEL5: + return +} +func ReleasePlayer() { + ns.MusicPopEvent() + ns.Frozen(ns.GetHost(), false) +} +func StartPriestSetPiece() { + if flag20 { + goto LABEL1 + } + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MusicPushEvent() + ns.Music(10, 100) + flag20 = true + ns.AudioEvent(ns.BigGong, wp12) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, PriestSetPieceSEG2) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war08c/dummy_test.go b/examples/war08c/dummy_test.go new file mode 100644 index 0000000..443ced9 --- /dev/null +++ b/examples/war08c/dummy_test.go @@ -0,0 +1,6 @@ +package war08c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war08c/war08c.go b/examples/war08c/war08c.go new file mode 100644 index 0000000..6539c8d --- /dev/null +++ b/examples/war08c/war08c.go @@ -0,0 +1,842 @@ +package war08c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.ObjectGroupID + gvar5 ns.ObjectGroupID + gvar6 ns.ObjectGroupID + wp7 ns.WaypointID + obj8 ns.ObjectID + obj9 ns.ObjectID + wp10 ns.WaypointID + wp11 ns.WaypointID + gvar12 ns.WallGroupID + gvar13 ns.WallGroupID + wp14 ns.WaypointID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + wp23 ns.WaypointID + wp24 ns.WaypointID + wp25 ns.WaypointID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + gvar32 int + gvar33 [10]ns.ObjectGroupID + gvar34 int + obj35 ns.ObjectID + obj36 [9]ns.ObjectID + gvar37 int + ivar38 int + ivar39 int + ivar40 int + ivar41 int + ivar42 int + ivar43 [10]int + flag44 [10]bool + wp45 [10]ns.WaypointID + str46 [6]string +) + +func init() { + gvar37 = 0 + ivar38 = 1 + ivar39 = 0 + ivar40 = 180 + ivar41 = 0 + ivar42 = 10 +} +func ArrowTrapAudio() { + ns.MoveWaypoint(wp7, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BowShoot, wp7) + ns.AudioEvent(ns.CrossBowShoot, wp7) +} +func DisableArrowTrapGroup01() { + ns.ObjectGroupOff(gvar4) +} +func EnableArrowTrapGroup01() { + ns.ObjectGroupOn(gvar4) + ns.FrameTimer(1, DisableArrowTrapGroup01) +} +func DisableArrowTrapGroup02() { + ns.ObjectGroupOff(gvar5) +} +func ActivateArrowTrap02() { + ns.ObjectGroupOn(gvar5) + ns.FrameTimer(1, DisableArrowTrapGroup02) +} +func DisableArrowTrapGroup03() { + ns.ObjectGroupOff(gvar6) +} +func ActivateArrowTrap03() { + ns.ObjectGroupOn(gvar6) + ns.FrameTimer(1, DisableArrowTrapGroup03) +} +func BeholderAttackExit() { + if !(ns.CurrentHealth(obj8) > 0) { + goto LABEL1 + } + if ns.IsVisibleTo(obj8, ns.GetHost()) { + goto LABEL1 + } + ns.Move(obj8, wp11) +LABEL1: + return +} +func BeholderStay() { + if !ns.IsCaller(obj8) { + goto LABEL1 + } + ns.Wander(obj8) +LABEL1: + if !ns.IsCaller(obj9) { + goto LABEL2 + } + ns.Wander(obj9) +LABEL2: + return +} +func OpenBoulderHallWall01() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(104, 162)) +} +func OpenBoulderHallWall02() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(213, 107)) +} +func GoldKeyRemoved() { + ns.WallGroupOpen(gvar12) + ns.WallGroupOpen(gvar13) +} +func ReleaseGoldKeyBombers() { + ns.WallGroupOpen(gvar13) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func InitializeSummoningCircles() { + var v0 int + v0 = 0 + for { + if !(v0 < 10) { + goto LABEL1 + } + flag44[v0] = true + ivar43[v0] = 0 + v0 += 1 + } +LABEL1: + str46[0] = "UrchinShaman" + str46[1] = "Mimic" + str46[2] = "Bear" + str46[3] = "Urchin" + str46[4] = "Imp" + str46[5] = "WhiteWolf" + obj35 = ns.Object("SummoningCircleTreasureLight") + obj36[0] = ns.Object("SummoningCircleTreasure01") + obj36[1] = ns.Object("SummoningCircleTreasure02") + obj36[2] = ns.Object("SummoningCircleTreasure03") + obj36[3] = ns.Object("SummoningCircleTreasure04") + obj36[4] = ns.Object("SummoningCircleTreasure05") + obj36[5] = ns.Object("SummoningCircleTreasure06") + obj36[6] = ns.Object("SummoningCircleTreasure07") + obj36[7] = ns.Object("SummoningCircleTreasure08") + obj36[8] = ns.Object("SummoningCircleTreasure09") + wp45[0] = ns.Waypoint("SummoningCircle01WP") + wp45[1] = ns.Waypoint("SummoningCircle02WP") + wp45[2] = ns.Waypoint("SummoningCircle03WP") + wp45[3] = ns.Waypoint("SummoningCircle04WP") + wp45[4] = ns.Waypoint("SummoningCircle05WP") + wp45[5] = ns.Waypoint("SummoningCircle06WP") + wp45[6] = ns.Waypoint("SummoningCircle07WP") + wp45[7] = ns.Waypoint("SummoningCircle08WP") + wp45[8] = ns.Waypoint("SummoningCircle09WP") + wp45[9] = ns.Waypoint("SummoningCircle10WP") + gvar33[0] = ns.ObjectGroup("SummonCircle01Lights") + gvar33[1] = ns.ObjectGroup("SummonCircle02Lights") + gvar33[2] = ns.ObjectGroup("SummonCircle03Lights") + gvar33[3] = ns.ObjectGroup("SummonCircle04Lights") + gvar33[4] = ns.ObjectGroup("SummonCircle05Lights") + gvar33[5] = ns.ObjectGroup("SummonCircle06Lights") + gvar33[6] = ns.ObjectGroup("SummonCircle07Lights") + gvar33[7] = ns.ObjectGroup("SummonCircle08Lights") + gvar33[8] = ns.ObjectGroup("SummonCircle09Lights") + gvar33[9] = ns.ObjectGroup("SummonCircle10Lights") +} +func MapInitialize() { + obj8 = ns.Object("Beholder01") + obj9 = ns.Object("Beholder02") + obj15 = ns.Object("Beholder03") + obj16 = ns.Object("Bat01") + obj17 = ns.Object("StoneBlock01") + obj18 = ns.Object("StoneBlock02") + obj19 = ns.Object("StoneBlock03") + obj20 = ns.Object("StoneBlock04") + obj21 = ns.Object("BomberPitElevator") + obj22 = ns.Object("SpiderPitElevator") + wp23 = ns.Waypoint("StoneBlock01WP") + wp26 = ns.Waypoint("StoneBlock02Home") + wp28 = ns.Waypoint("StoneBlock03Home") + wp25 = ns.Waypoint("StoneBlock02Dest") + wp27 = ns.Waypoint("StoneBlock03Dest") + wp24 = ns.Waypoint("StoneBlock04WP") + wp14 = ns.Waypoint("GoldKeyWP") + wp30 = ns.Waypoint("BomberCreationWP") + wp10 = ns.Waypoint("BomberAudioOrigin") + wp29 = ns.Waypoint("Beholder01SetPieceWP") + wp11 = ns.Waypoint("BeholderRoomExitWP") + wp7 = ns.Waypoint("ArrowTrapAudioOrigin") + wp31 = ns.Waypoint("SecretAudioOrigin") + gvar4 = ns.ObjectGroup("ArrowTrapGroup01") + gvar5 = ns.ObjectGroup("ArrowTrapGroup02") + gvar6 = ns.ObjectGroup("ArrowTrapGroup03") + gvar12 = ns.WallGroup("GoldKeyWalls") + gvar13 = ns.WallGroup("BomberCageWalls") + InitializeSummoningCircles() +} +func MapEntry() { + ns.Music(18, 100) + ns.UnBlind() +} +func EnableSpiderPitElevator() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOn(obj22) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp31, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp31) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func SealTheTempleFX() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(ns.GetHost()) + v1 = ns.GetObjectY(ns.GetHost()) + ns.AudioEvent(ns.HugeFoot, wp23) + ns.Effect(ns.JIGGLE, v0, v1, 10, 0) +} +func SealTheTemple() { + ns.ObjectOff(ns.GetTrigger()) + ns.Move(obj17, wp23) + ns.Move(obj20, wp24) + ns.AudioEvent(ns.BigGong, wp23) + ns.AudioEvent(ns.SecretWallClose, wp23) + ns.FrameTimer(10, SealTheTempleFX) +} +func EnableElevator() { + ns.ObjectOn(obj21) +} +func ReleasePlayer() { + ns.WideScreen(false) + ns.ClearOwner(obj8) + ns.Frozen(ns.GetHost(), false) + if !(ns.CurrentHealth(obj16) > 0) { + goto LABEL1 + } + ns.ObjectOn(obj16) +LABEL1: + ns.Delete(ns.Object("War08a:CharmedWolf01")) + ns.Delete(ns.Object("War08a:CharmedWolf02")) + ns.Delete(ns.Object("War08a:CharmedWolf03")) + ns.Delete(ns.Object("War08a:CharmedWolf04")) + ns.NoWallSound(true) + ns.WallClose(ns.Wall(169, 87)) + ns.NoWallSound(false) + ns.FrameTimer(60, EnableElevator) +} +func BeholderSetpieceSEG3() { + ns.FrameTimer(60, ReleasePlayer) +} +func BeholderSetpieceSEG2() { + ns.Move(obj8, wp29) + ns.FrameTimer(180, ReleasePlayer) +} +func BeholderSetpiece() { + ns.SetOwner(ns.GetHost(), obj8) + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.WideScreen(true) + if !(ns.CurrentHealth(obj16) > 0) { + goto LABEL1 + } + ns.ObjectOff(obj16) +LABEL1: + ns.FrameTimer(60, BeholderSetpieceSEG2) +} +func DisableBomberPitElevator() { + ns.ObjectOff(obj21) +} +func BlockGatesFX() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(ns.GetHost()) + v1 = ns.GetObjectY(ns.GetHost()) + ns.AudioEvent(ns.HugeFoot, wp25) + ns.Effect(ns.JIGGLE, v0, v1, 10, 0) +} +func CloseBlockGates() { + ns.Move(obj18, wp25) + ns.Move(obj19, wp27) + ns.AudioEvent(ns.SecretWallClose, wp25) + ns.AudioEvent(ns.SecretWallClose, wp27) + ns.FrameTimer(10, BlockGatesFX) +} +func SealBeholderRoom() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallClose(ns.Wall(209, 109)) + ns.MoveObject(obj8, ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.AggressionLevel(obj8, 0.83) + ns.AggressionLevel(obj9, 0.83) + ns.Wander(obj8) + ns.Wander(obj9) +} +func ResetSummonCircle(a1 int) { + flag44[a1] = true + ns.ObjectGroupOn(gvar33[a1]) +} +func SummoningCircleCleared(a1 int) { + ivar39 += 1 + if ivar39 != 9 { + goto LABEL1 + } + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 500) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1]), 0, 0) + ns.MoveObject(obj35, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.MoveObject(obj36[ivar39-1], ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.AudioEvent(ns.SmallGong, wp45[a1]) + goto LABEL2 +LABEL1: + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1]), 0, 0) + ns.MoveObject(obj35, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.MoveObject(obj36[ivar39-1], ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.AudioEvent(ns.BigGong, wp45[a1]) +LABEL2: + return +} +func SummonCircle01Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 0 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle02Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 1 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle03Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 2 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle04Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 3 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle05Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 4 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle06Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 5 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle07Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 6 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle08Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 7 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle09Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 8 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle10Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 9 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func EnableBomberPitElevator() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOn(obj21) +LABEL1: + return +} +func OpenBomberPitExit() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(159, 109)) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war08d/dummy_test.go b/examples/war08d/dummy_test.go new file mode 100644 index 0000000..ff466d2 --- /dev/null +++ b/examples/war08d/dummy_test.go @@ -0,0 +1,6 @@ +package war08d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war08d/war08d.go b/examples/war08d/war08d.go new file mode 100644 index 0000000..c87a457 --- /dev/null +++ b/examples/war08d/war08d.go @@ -0,0 +1,2353 @@ +package war08d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + gvar5 ns.ObjectGroupID + gvar6 ns.ObjectGroupID + gvar7 ns.ObjectGroupID + gvar8 ns.ObjectGroupID + wp9 ns.WaypointID + ivar10 int + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + wp25 ns.WaypointID + wp26 ns.WaypointID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + fvar41 float32 + fvar42 float32 + ivar43 int + str44 [3]string + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + flag53 bool + obj54 ns.ObjectID + obj55 ns.ObjectID + gvar56 ns.WallGroupID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + gvar68 ns.ObjectGroupID + wp69 ns.WaypointID + wp70 ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + wp73 ns.WaypointID + wp74 ns.WaypointID + wp75 ns.WaypointID + obj76 ns.ObjectID + obj77 [15]ns.ObjectID + gvar78 [21]ns.ObjectGroupID + gvar79 int + ivar80 int + ivar81 int + ivar82 int + ivar83 int + ivar84 int + ivar85 [21]int + flag86 [21]bool + wp87 [21]ns.WaypointID + str88 [6]string +) + +func init() { + ivar10 = 0 + fvar41 = 0 + fvar42 = 0 + ivar43 = 0 + flag53 = false + gvar79 = 0 + ivar80 = 1 + ivar81 = 0 + ivar82 = 10 + ivar83 = 180 + ivar84 = 0 +} +func ArrowTrapAudio() { + ns.MoveWaypoint(wp9, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BowShoot, wp9) + ns.AudioEvent(ns.CrossBowShoot, wp9) +} +func DisableArrowTrap01() { + ns.ObjectGroupOff(gvar5) +} +func ActivateArrowTrap01() { + ns.ObjectGroupOn(gvar5) + ns.FrameTimer(1, DisableArrowTrap01) +} +func DisableArrowTrap02() { + ns.ObjectGroupOff(gvar6) +} +func ActivateArrowTrap02() { + ns.ObjectGroupOn(gvar6) + ns.FrameTimer(1, DisableArrowTrap02) +} +func DisableArrowTrap03() { + ns.ObjectGroupOff(gvar7) +} +func ActivateArrowTrap03() { + ns.ObjectGroupOn(gvar7) + ns.FrameTimer(1, DisableArrowTrap03) +} +func DisableUltimateArrowTrapGuns() { + ns.ObjectGroupOff(gvar8) +} +func ResetUltimateArrowTrap() { + ns.ObjectOn(obj4) +} +func UltimateArrowTrapLoop() { + if !(ivar10 < 8) { + goto LABEL1 + } + ivar10 += 1 + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, UltimateArrowTrapLoop) +LABEL1: + if ivar10 != 8 { + goto LABEL2 + } + ivar10 = 0 + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, ResetUltimateArrowTrap) +LABEL2: + return +} +func ActivateUltimateArrowTrap() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, UltimateArrowTrapLoop) +} +func InitializeBeholders() { + str44[0] = "SPELL_STUN" + str44[1] = "SPELL_CONFUSE" + str44[2] = "SPELL_FUMBLE" +} +func BeholderIdle() { + ns.Wander(ns.GetTrigger()) +} +func Beholder01Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj11) > 0 && ns.CurrentHealth(obj27) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj11) + v1 = ns.GetObjectY(obj11) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj11, obj27) + ns.CreatureFollow(obj27, obj11) +LABEL1: + return +} +func Beholder01Recognize() { + ns.FrameTimer(90, Beholder01Bombers) +} +func Beholder01Die() { + ns.Damage(obj27, 0, 500, 0) +} +func Beholder02Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj12) > 0 && ns.CurrentHealth(obj28) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj12) + v1 = ns.GetObjectY(obj12) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj12, obj28) + ns.CreatureFollow(obj28, obj12) +LABEL1: + return +} +func Beholder02Recognize() { + ns.FrameTimer(90, Beholder02Bombers) +} +func Beholder02Die() { + ns.Damage(obj28, 0, 500, 0) +} +func Beholder03Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj13) > 0 && ns.CurrentHealth(obj29) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj13) + v1 = ns.GetObjectY(obj13) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj13, obj29) + ns.CreatureFollow(obj29, obj13) +LABEL1: + return +} +func Beholder03Recognize() { + ns.FrameTimer(90, Beholder03Bombers) +} +func Beholder03Die() { + ns.Damage(obj29, 0, 500, 0) +} +func Beholder04Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj14) > 0 && ns.CurrentHealth(obj30) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj14) + v1 = ns.GetObjectY(obj14) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj14, obj30) + ns.CreatureFollow(obj30, obj14) +LABEL1: + return +} +func Beholder04Recognize() { + ns.FrameTimer(90, Beholder04Bombers) +} +func Beholder04Die() { + ns.Damage(obj30, 0, 500, 0) +} +func Beholder05Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj15) > 0 && ns.CurrentHealth(obj31) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj15) + v1 = ns.GetObjectY(obj15) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj15, obj31) + ns.CreatureFollow(obj31, obj15) +LABEL1: + return +} +func Beholder05Recognize() { + ns.FrameTimer(90, Beholder05Bombers) +} +func Beholder05Die() { + ns.Damage(obj31, 0, 500, 0) +} +func Beholder06Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj16) > 0 && ns.CurrentHealth(obj32) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj16) + v1 = ns.GetObjectY(obj16) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj16, obj32) + ns.CreatureFollow(obj32, obj16) +LABEL1: + return +} +func Beholder06Recognize() { + ns.FrameTimer(90, Beholder06Bombers) +} +func Beholder06Die() { + ns.Damage(obj32, 0, 500, 0) +} +func Beholder07Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj17) > 0 && ns.CurrentHealth(obj33) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj17) + v1 = ns.GetObjectY(obj17) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj17, obj33) + ns.CreatureFollow(obj33, obj17) +LABEL1: + return +} +func Beholder07Recognize() { + ns.FrameTimer(90, Beholder07Bombers) +} +func Beholder07Die() { + ns.Damage(obj33, 0, 500, 0) +} +func Beholder08Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj18) > 0 && ns.CurrentHealth(obj34) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj18) + v1 = ns.GetObjectY(obj18) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj18, obj34) + ns.CreatureFollow(obj34, obj18) +LABEL1: + return +} +func Beholder08Recognize() { + ns.FrameTimer(90, Beholder08Bombers) +} +func Beholder08Die() { + ns.Damage(obj34, 0, 500, 0) +} +func Beholder09Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj19) > 0 && ns.CurrentHealth(obj35) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj19) + v1 = ns.GetObjectY(obj19) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj19, obj35) + ns.CreatureFollow(obj35, obj19) +LABEL1: + return +} +func Beholder09Recognize() { + ns.FrameTimer(90, Beholder09Bombers) +} +func Beholder09Die() { + ns.Damage(obj35, 0, 500, 0) +} +func Beholder10Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj20) > 0 && ns.CurrentHealth(obj36) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj20) + v1 = ns.GetObjectY(obj20) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj20, obj36) + ns.CreatureFollow(obj36, obj20) +LABEL1: + return +} +func Beholder10Recognize() { + ns.FrameTimer(90, Beholder10Bombers) +} +func Beholder10Die() { + ns.Damage(obj36, 0, 500, 0) +} +func Beholder11Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj21) > 0 && ns.CurrentHealth(obj37) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj21) + v1 = ns.GetObjectY(obj21) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj21, obj37) + ns.CreatureFollow(obj37, obj21) +LABEL1: + return +} +func Beholder11Recognize() { + ns.FrameTimer(90, Beholder11Bombers) +} +func Beholder11Die() { + ns.Damage(obj37, 0, 500, 0) +} +func Beholder12Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj22) > 0 && ns.CurrentHealth(obj38) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj22) + v1 = ns.GetObjectY(obj22) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj22, obj38) + ns.CreatureFollow(obj38, obj22) +LABEL1: + return +} +func Beholder12Recognize() { + ns.FrameTimer(90, Beholder12Bombers) +} +func Beholder12Die() { + ns.Damage(obj38, 0, 500, 0) +} +func Beholder13Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj23) > 0 && ns.CurrentHealth(obj39) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj23) + v1 = ns.GetObjectY(obj23) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj23, obj39) + ns.CreatureFollow(obj39, obj23) +LABEL1: + return +} +func Beholder13Recognize() { + ns.FrameTimer(90, Beholder13Bombers) +} +func Beholder13Die() { + ns.Damage(obj39, 0, 500, 0) +} +func Beholder14Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj24) > 0 && ns.CurrentHealth(obj40) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj24) + v1 = ns.GetObjectY(obj24) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj24, obj40) + ns.CreatureFollow(obj40, obj24) +LABEL1: + return +} +func Beholder14Recognize() { + ns.FrameTimer(90, Beholder14Bombers) +} +func Beholder14Die() { + ns.Damage(obj40, 0, 500, 0) +} +func OpenBlockPassage() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SpikeBlockMove, wp52) + ns.Move(obj45, wp48) + ns.Move(obj46, wp49) + ns.Move(obj47, wp51) +} +func SealBlockRoom() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.Move(obj46, wp50) +} +func CagedAnimalDie() { + if flag53 { + goto LABEL1 + } + flag53 = true + ns.WallGroupBreak(gvar56) +LABEL1: + return +} +func UnlockBearCage() { + ns.ObjectOff(ns.GetTrigger()) + ns.UnlockDoor(obj54) + ns.UnlockDoor(obj55) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func FireFONTrap01() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj57, ns.GetWaypointX(wp69), ns.GetWaypointY(wp69)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj58, ns.GetWaypointX(wp70), ns.GetWaypointY(wp70)) + ns.SecondTimer(5, FireFONTrap01) +} +func EndFONSetpiece() { + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) +} +func BearAttack() { + ns.EnchantOff(obj62, ns.ENCHANT_INVULNERABLE) + ns.AggressionLevel(obj62, 0.83) + ns.Attack(obj62, ns.GetHost()) + ns.FrameTimer(45, FireFONTrap01) +} +func InitializeFONtraps() { + obj57 = ns.Object("FON_Origin01") + obj58 = ns.Object("FON_Origin02") + obj59 = ns.Object("FON_Origin03") + obj60 = ns.Object("FON_Origin04") + obj61 = ns.Object("FON_Origin05") + obj62 = ns.Object("Bear01") + obj63 = ns.Object("SpikeTrapDoor01") + obj64 = ns.Object("SpikeTrapDoor02") + obj65 = ns.Object("SpikeTrapDoor03") + obj66 = ns.Object("SpikeTrapDoor04") + gvar68 = ns.ObjectGroup("SpikeGroup01") + wp69 = ns.Waypoint("FON_Target01") + wp70 = ns.Waypoint("FON_Target02") + wp71 = ns.Waypoint("FON_Target03") + wp72 = ns.Waypoint("FON_Target04") + wp73 = ns.Waypoint("FON_Target05") + wp74 = ns.Waypoint("SpikeTrapAudioOrigin") + ns.Enchant(obj62, ns.ENCHANT_INVULNERABLE, 0) +} +func StartFONSetpiece() { + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.CreatureIdle(ns.GetHost()) + BearAttack() +} +func BearDie() { + ns.FrameTimer(60, EndFONSetpiece) +} +func BearInjured() { + ns.Damage(ns.GetTrigger(), 0, 300, 0) +} +func FireFONTrap02() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj59, ns.GetWaypointX(wp71), ns.GetWaypointY(wp71)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj60, ns.GetWaypointX(wp72), ns.GetWaypointY(wp72)) +} +func EnableSpikeTrap() { + ns.ObjectGroupOn(gvar68) + ns.AudioEvent(ns.FloorSpikesUp, wp74) + ns.LockDoor(obj63) + ns.LockDoor(obj64) + ns.LockDoor(obj65) + ns.LockDoor(obj66) + ns.ObjectOn(obj67) +} +func DisableSpikeTrap() { + ns.ObjectGroupOff(gvar68) + ns.AudioEvent(ns.FloorSpikesDown, wp74) + ns.UnlockDoor(obj63) + ns.UnlockDoor(obj64) + ns.UnlockDoor(obj65) + ns.UnlockDoor(obj66) + ns.ObjectOff(obj67) +} +func InitializeSummoningCircles() { + var v0 int + v0 = 0 + for { + if !(v0 < 21) { + goto LABEL1 + } + flag86[v0] = true + ivar85[v0] = 0 + v0 += 1 + } +LABEL1: + str88[0] = "UrchinShaman" + str88[1] = "Mimic" + str88[2] = "Bear" + str88[3] = "Urchin" + str88[4] = "Imp" + str88[5] = "WhiteWolf" + obj76 = ns.Object("SummoningCircleTreasureLight") + obj77[0] = ns.Object("SummoningCircleTreasure01") + obj77[1] = ns.Object("SummoningCircleTreasure02") + obj77[2] = ns.Object("SummoningCircleTreasure03") + obj77[3] = ns.Object("SummoningCircleTreasure04") + obj77[4] = ns.Object("SummoningCircleTreasure05") + obj77[5] = ns.Object("SummoningCircleTreasure06") + obj77[6] = ns.Object("SummoningCircleTreasure07") + obj77[7] = ns.Object("SummoningCircleTreasure08") + obj77[8] = ns.Object("SummoningCircleTreasure09") + obj77[9] = ns.Object("SummoningCircleTreasure10") + obj77[10] = ns.Object("SummoningCircleTreasure11") + obj77[11] = ns.Object("SummoningCircleTreasure12") + obj77[12] = ns.Object("SummoningCircleTreasure13") + obj77[13] = ns.Object("SummoningCircleTreasure14") + obj77[14] = ns.Object("SummoningCircleTreasure15") + wp87[0] = ns.Waypoint("SummoningCircle01WP") + wp87[1] = ns.Waypoint("SummoningCircle02WP") + wp87[2] = ns.Waypoint("SummoningCircle03WP") + wp87[3] = ns.Waypoint("SummoningCircle04WP") + wp87[4] = ns.Waypoint("SummoningCircle05WP") + wp87[5] = ns.Waypoint("SummoningCircle06WP") + wp87[6] = ns.Waypoint("SummoningCircle07WP") + wp87[7] = ns.Waypoint("SummoningCircle08WP") + wp87[8] = ns.Waypoint("SummoningCircle09WP") + wp87[9] = ns.Waypoint("SummoningCircle10WP") + wp87[10] = ns.Waypoint("SummoningCircle11WP") + wp87[11] = ns.Waypoint("SummoningCircle12WP") + wp87[12] = ns.Waypoint("SummoningCircle13WP") + wp87[13] = ns.Waypoint("SummoningCircle14WP") + wp87[14] = ns.Waypoint("SummoningCircle15WP") + wp87[15] = ns.Waypoint("SummoningCircle16WP") + wp87[16] = ns.Waypoint("SummoningCircle17WP") + wp87[17] = ns.Waypoint("SummoningCircle18WP") + wp87[18] = ns.Waypoint("SummoningCircle19WP") + wp87[19] = ns.Waypoint("SummoningCircle20WP") + wp87[20] = ns.Waypoint("SummoningCircle21WP") + gvar78[0] = ns.ObjectGroup("SummonCircle01Lights") + gvar78[1] = ns.ObjectGroup("SummonCircle02Lights") + gvar78[2] = ns.ObjectGroup("SummonCircle03Lights") + gvar78[3] = ns.ObjectGroup("SummonCircle04Lights") + gvar78[4] = ns.ObjectGroup("SummonCircle05Lights") + gvar78[5] = ns.ObjectGroup("SummonCircle06Lights") + gvar78[6] = ns.ObjectGroup("SummonCircle07Lights") + gvar78[7] = ns.ObjectGroup("SummonCircle08Lights") + gvar78[8] = ns.ObjectGroup("SummonCircle09Lights") + gvar78[9] = ns.ObjectGroup("SummonCircle10Lights") + gvar78[10] = ns.ObjectGroup("SummonCircle11Lights") + gvar78[11] = ns.ObjectGroup("SummonCircle12Lights") + gvar78[12] = ns.ObjectGroup("SummonCircle13Lights") + gvar78[13] = ns.ObjectGroup("SummonCircle14Lights") + gvar78[14] = ns.ObjectGroup("SummonCircle15Lights") + gvar78[15] = ns.ObjectGroup("SummonCircle16Lights") + gvar78[16] = ns.ObjectGroup("SummonCircle17Lights") + gvar78[17] = ns.ObjectGroup("SummonCircle18Lights") + gvar78[18] = ns.ObjectGroup("SummonCircle19Lights") + gvar78[19] = ns.ObjectGroup("SummonCircle20Lights") + gvar78[20] = ns.ObjectGroup("SummonCircle21Lights") +} +func MapInitialize() { + obj45 = ns.Object("StoneBlock01") + obj46 = ns.Object("StoneBlock02") + obj47 = ns.Object("StoneBlock03") + obj11 = ns.Object("Beholder01") + obj12 = ns.Object("Beholder02") + obj13 = ns.Object("Beholder03") + obj14 = ns.Object("Beholder04") + obj15 = ns.Object("Beholder05") + obj16 = ns.Object("Beholder06") + obj17 = ns.Object("Beholder07") + obj18 = ns.Object("Beholder08") + obj19 = ns.Object("Beholder09") + obj20 = ns.Object("Beholder10") + obj21 = ns.Object("Beholder11") + obj22 = ns.Object("Beholder12") + obj23 = ns.Object("Beholder13") + obj24 = ns.Object("Beholder14") + obj54 = ns.Object("CageGateL") + obj55 = ns.Object("CageGateR") + obj4 = ns.Object("UltimateArrowTrapSwitch") + wp9 = ns.Waypoint("ArrowTrapAudioOrigin") + obj67 = ns.Object("SpikeSFX") + wp48 = ns.Waypoint("StoneBlock01WP") + wp49 = ns.Waypoint("StoneBlock02WP") + wp50 = ns.Waypoint("StoneBlock02WP2") + wp51 = ns.Waypoint("StoneBlock03WP") + wp52 = ns.Waypoint("StoneBlockAudioOrigin") + wp25 = ns.Waypoint("BomberCreationWP") + wp26 = ns.Waypoint("BomberAudioOrigin") + wp75 = ns.Waypoint("SecretAudioOrigin") + gvar5 = ns.ObjectGroup("ArrowTrapGroup01") + gvar6 = ns.ObjectGroup("ArrowTrapGroup02") + gvar7 = ns.ObjectGroup("ArrowTrapGroup03") + gvar8 = ns.ObjectGroup("ArrowTrapGroup04") + gvar56 = ns.WallGroup("CageWalls") + ns.Wander(obj11) + ns.Wander(obj12) + ns.Wander(obj13) + ns.AggressionLevel(obj13, 0.83) + ns.Wander(obj14) + ns.AggressionLevel(obj14, 0.83) + ns.Wander(obj15) + ns.AggressionLevel(obj15, 0.83) + ns.Wander(obj16) + ns.AggressionLevel(obj16, 0.83) + ns.Wander(obj17) + ns.AggressionLevel(obj17, 0.83) + ns.Wander(obj18) + ns.AggressionLevel(obj18, 0.83) + ns.Wander(obj19) + ns.AggressionLevel(obj19, 0.83) + ns.Wander(obj20) + ns.AggressionLevel(obj20, 0.83) + ns.Wander(obj21) + ns.AggressionLevel(obj21, 0.83) + ns.Wander(obj22) + ns.AggressionLevel(obj22, 0.83) + ns.LockDoor(obj54) + ns.LockDoor(obj55) + InitializeBeholders() + InitializeSummoningCircles() + InitializeFONtraps() +} +func OpenPitElevatorWall() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(56, 134)) +} +func MonstersGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp75, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp75) +} +func BoulderSecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 200) + SecretSFX() +} +func OpenBoulderSecret() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(104, 40)) + ns.AudioEvent(ns.SecretWallOpen, ns.Waypoint("BoulderSecretAudioOrigin")) + SecretSFX() +} +func SecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func ResetSummonCircle(a1 int) { + flag86[a1] = true + ns.ObjectGroupOn(gvar78[a1]) +} +func SummoningCircleCleared(a1 int) { + ivar84 += 1 + if ivar84 != 15 { + goto LABEL1 + } + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 500) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1]), 0, 0) + ns.MoveObject(obj76, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.MoveObject(obj77[ivar84-1], ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.AudioEvent(ns.SmallGong, wp87[a1]) + goto LABEL2 +LABEL1: + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1]), 0, 0) + ns.MoveObject(obj76, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.MoveObject(obj77[ivar84-1], ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.AudioEvent(ns.BigGong, wp87[a1]) +LABEL2: + return +} +func SummonCircle01Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 0 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle02Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 1 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle03Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 2 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle04Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 3 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle05Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 4 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle06Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 5 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle07Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 6 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle08Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 7 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle09Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 8 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle10Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 9 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle11Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 10 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle12Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 11 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle13Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 12 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle14Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 13 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle15Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 14 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle16Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 15 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle17Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 16 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle18Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 17 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle19Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 18 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle20Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 19 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle21Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 20 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war08e/dummy_test.go b/examples/war08e/dummy_test.go new file mode 100644 index 0000000..0120ab3 --- /dev/null +++ b/examples/war08e/dummy_test.go @@ -0,0 +1,6 @@ +package war08e + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war08e/war08e.go b/examples/war08e/war08e.go new file mode 100644 index 0000000..1e7ed70 --- /dev/null +++ b/examples/war08e/war08e.go @@ -0,0 +1,388 @@ +package war08e + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + wp9 ns.WaypointID + wp10 ns.WaypointID + wp11 ns.WaypointID + wp12 ns.WaypointID + wp13 ns.WaypointID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.WallGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + gvar30 ns.WallGroupID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + gvar41 int + gvar42 int + gvar43 int + gvar44 int + gvar45 int + gvar46 int + gvar47 int + gvar48 int + gvar49 int + obj50 ns.ObjectID + obj51 ns.ObjectID + flag52 bool + flag53 bool + flag54 bool + flag55 bool + flag56 bool + wp57 ns.WaypointID + flag58 bool +) + +func init() { + gvar41 = 0 + gvar42 = 1 + gvar43 = 2 + gvar44 = 3 + gvar45 = 4 + gvar46 = 5 + gvar47 = 6 + gvar48 = gvar41 + gvar49 = gvar46 + flag52 = false + flag53 = false + flag54 = false + flag55 = false + flag56 = false + flag58 = false +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func FireFONTrap01() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj4, ns.GetWaypointX(wp9), ns.GetWaypointY(wp9)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj5, ns.GetWaypointX(wp10), ns.GetWaypointY(wp10)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj6, ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj7, ns.GetWaypointX(wp12), ns.GetWaypointY(wp12)) + ns.SecondTimer(5, FireFONTrap01) +} +func InitializeFONtraps() { + obj4 = ns.Object("FON_Origin01") + obj5 = ns.Object("FON_Origin02") + obj6 = ns.Object("FON_Origin03") + obj7 = ns.Object("FON_Origin04") + obj8 = ns.Object("FON_Origin05") + wp9 = ns.Waypoint("FON_Target01") + wp10 = ns.Waypoint("FON_Target02") + wp11 = ns.Waypoint("FON_Target03") + wp12 = ns.Waypoint("FON_Target04") + wp13 = ns.Waypoint("FON_Target05") + FireFONTrap01() +} +func OpenFONSecret() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SecretWallOpen, ns.Waypoint("FonSecretWP")) + ns.WallOpen(ns.Wall(44, 122)) +} +func MapInitialize() { + obj14 = ns.Object("MoverA1") + obj15 = ns.Object("MoverA2") + obj16 = ns.Object("MoverA3") + obj17 = ns.Object("MoverB1") + obj18 = ns.Object("MoverB2") + obj19 = ns.Object("MoverB3") + obj20 = ns.Object("Priest01") + obj21 = ns.Object("Priest02") + obj22 = ns.Object("Imp01") + obj23 = ns.Object("Imp02") + obj24 = ns.Object("WierdlingPool") + wp31 = ns.Waypoint("GolemWP_A") + wp32 = ns.Waypoint("GolemWP_B") + wp33 = ns.Waypoint("Priest01WP") + wp34 = ns.Waypoint("Priest02WP") + wp35 = ns.Waypoint("Priest1Home") + wp36 = ns.Waypoint("Priest2Home") + wp37 = ns.Waypoint("Priest1ExitWP") + wp38 = ns.Waypoint("Priest2ExitWP") + wp39 = ns.Waypoint("ImpCreationWP") + wp40 = ns.Waypoint("WierdlingPoolWP") + gvar25 = ns.ObjectGroup("GolemLights") + gvar26 = ns.ObjectGroup("GolemHandleTriggers") + gvar27 = ns.WallGroup("GolemArenaEntranceWalls") + gvar28 = ns.WallGroup("GolemArenaExitWalls") + gvar29 = ns.WallGroup("WierdlingExitWalls") + gvar30 = ns.WallGroup("AldwynElevatorWalls") + ns.SetOwner(ns.GetHost(), obj20) + ns.SetOwner(ns.GetHost(), obj21) + InitializeFONtraps() +} +func OpenElevatorWalls() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar30) +} +func NoMonsters() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlaySub1Music() { + ns.Music(18, 100) +} +func PlaySub2Music() { + ns.Music(19, 100) +} +func SecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(ns.Waypoint("FonSecretWP"), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, ns.Waypoint("FonSecretWP")) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 200) +} +func PriestReport() { + var v0 int + v0 = gvar48 + if v0 == gvar42 { + goto LABEL1 + } + if v0 == gvar43 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + if !ns.IsTrigger(obj22) { + goto LABEL4 + } + flag53 = true + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj22), ns.GetObjectY(obj22), 0, 0) + ns.MoveObject(obj20, ns.GetObjectX(obj22), ns.GetObjectY(obj22)) + ns.AudioEvent(ns.ImpRecognize, wp57) + ns.Delete(obj22) +LABEL4: + if !ns.IsTrigger(obj23) { + goto LABEL5 + } + flag54 = true + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj23), ns.GetObjectY(obj23), 0, 0) + ns.MoveObject(obj21, ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + ns.AudioEvent(ns.ImpRecognize, wp57) + ns.Delete(obj23) +LABEL5: + if !flag53 { + goto LABEL6 + } + if !flag54 { + goto LABEL6 + } + gvar48 = gvar44 + ns.FrameTimer(30, SummonGolems) +LABEL6: + goto LABEL3 +LABEL2: + if !ns.IsTrigger(obj22) { + goto LABEL7 + } + flag55 = true +LABEL7: + if !ns.IsTrigger(obj23) { + goto LABEL8 + } + flag56 = true +LABEL8: + if !(flag55 && flag56) { + goto LABEL9 + } + ns.WallGroupClose(gvar28) + gvar48 = gvar45 + ns.Delete(obj22) + ns.Delete(obj23) +LABEL9: + goto LABEL3 +LABEL3: + return +} +func GolemDie() { + if !(ns.CurrentHealth(obj50) <= 0 && ns.CurrentHealth(obj51) <= 0) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 1000) + ns.WallGroupOpen(gvar28) + ns.AudioEvent(ns.BigGong, wp33) + ns.AudioEvent(ns.BigGong, wp34) +LABEL1: + return +} +func GolemsAttack() { + ns.Attack(obj50, ns.GetHost()) + ns.Attack(obj51, ns.GetHost()) +} +func RemoveLetterbox() { + ns.WideScreen(false) + ns.Delete(obj22) + ns.Delete(obj23) + ns.Frozen(ns.GetHost(), false) + ns.Music(27, 100) + ns.FrameTimer(45, GolemsAttack) +} +func ImpsExit() { + ns.Move(obj22, wp37) + ns.Move(obj23, wp38) +} +func PriestsExit() { + gvar48 = gvar43 + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj20), ns.GetObjectY(obj20), 0, 0) + ns.MoveWaypoint(wp39, ns.GetObjectX(obj20), ns.GetObjectY(obj20)) + obj22 = ns.CreateObject("Imp", wp39) + ns.AudioEvent(ns.ImpRecognize, wp39) + ns.MoveObject(obj20, ns.GetWaypointX(wp35), ns.GetWaypointY(wp35)) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj21), ns.GetObjectY(obj21), 0, 0) + ns.MoveWaypoint(wp39, ns.GetObjectX(obj21), ns.GetObjectY(obj21)) + obj23 = ns.CreateObject("Imp", wp39) + ns.MoveObject(obj21, ns.GetWaypointX(wp36), ns.GetWaypointY(wp36)) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj23) + ns.AggressionLevel(obj22, 0) + ns.AggressionLevel(obj23, 0) + ns.SetCallback(obj22, 11, PriestReport) + ns.SetCallback(obj23, 11, PriestReport) + ns.FrameTimer(1, ImpsExit) +} +func GetGolemHandles() { + var v0 int + if !(flag52 || ns.IsCaller(obj22) || ns.IsCaller(obj23)) { + goto LABEL1 + } + return +LABEL1: + v0 = gvar49 + if v0 == gvar46 { + goto LABEL2 + } + if v0 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL2: + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + obj50 = ns.GetCaller() + ns.SetCallback(obj50, 5, GolemDie) + ns.ClearOwner(obj20) + ns.CreatureIdle(obj50) + ns.ClearOwner(obj50) + ns.AggressionLevel(obj50, 0) + gvar49 = gvar47 + goto LABEL5 +LABEL3: + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + obj51 = ns.GetCaller() + ns.SetCallback(obj51, 5, GolemDie) + ns.ClearOwner(obj21) + ns.ClearOwner(obj51) + ns.CreatureIdle(obj51) + ns.AggressionLevel(obj51, 0) + ns.LookAtObject(obj50, ns.GetHost()) + ns.LookAtObject(obj51, ns.GetHost()) + flag52 = true + ns.AggressionLevel(obj50, 0.83) + ns.AggressionLevel(obj51, 0.83) + RemoveLetterbox() + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func SummonGolems() { + ns.CastSpellObjectLocation(ns.SPELL_SUMMON_STONE_GOLEM, obj20, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31)) + ns.CastSpellObjectLocation(ns.SPELL_SUMMON_STONE_GOLEM, obj21, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32)) + ns.AudioEvent(ns.SummonCast, wp33) + ns.AudioEvent(ns.SummonCast, wp34) + ns.ObjectGroupOn(gvar26) + ns.ObjectGroupOff(gvar25) + ns.FrameTimer(60, PriestsExit) +} +func ImpsEnter() { + ns.WallGroupOpen(gvar28) + ns.Move(obj22, wp33) + ns.Move(obj23, wp34) +} +func GolemSetPiece() { + if gvar48 == gvar41 { + goto LABEL1 + } + return +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.MusicPushEvent() + ns.Music(10, 100) + wp57 = ns.Waypoint("GolemSP_AudioOrigin") + ns.MoveWaypoint(wp57, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + gvar48 = gvar42 + ns.WallGroupClose(gvar27) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.WideScreen(true) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj23) + ns.FrameTimer(15, ImpsEnter) +LABEL2: + return +} +func RetrieveWierdling() { + if !flag58 { + goto LABEL1 + } + return +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.MusicPopEvent() + ns.SetQuestStatus(1, "Chapter8:HasWeirdling") + flag58 = true + ns.SetHalberd(2) + ns.ObjectOff(obj24) + ns.WallGroupOpen(gvar29) + ns.JournalEdit(ns.GetHost(), "Chapter8Wierdling", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8MeetCaptain", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL2: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war09a/dummy_test.go b/examples/war09a/dummy_test.go new file mode 100644 index 0000000..b4c43f5 --- /dev/null +++ b/examples/war09a/dummy_test.go @@ -0,0 +1,6 @@ +package war09a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war09a/war09a.go b/examples/war09a/war09a.go new file mode 100644 index 0000000..330557e --- /dev/null +++ b/examples/war09a/war09a.go @@ -0,0 +1,742 @@ +package war09a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 [2]ns.ObjectID + wp5 [2]ns.WaypointID + gvar6 ns.WallGroupID + wp7 [5]ns.WaypointID + wp8 [6]ns.WaypointID + obj9 [6]ns.ObjectID + gvar10 int + ivar11 int + ivar12 int + gvar13 int + flag14 bool + flag15 bool + flag16 bool + fvar17 float32 + fvar18 float32 + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + gvar34 ns.ObjectGroupID + gvar35 ns.ObjectGroupID + gvar36 ns.ObjectGroupID + gvar37 ns.ObjectGroupID + gvar38 ns.WallGroupID + gvar39 ns.WallGroupID + gvar40 ns.WallGroupID + gvar41 ns.WallGroupID + gvar42 ns.WallGroupID + gvar43 ns.WallGroupID + gvar44 ns.WallGroupID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + flag50 bool + flag51 bool + gvar52 int + gvar53 int + gvar54 int + gvar55 int + gvar56 int + gvar57 int + gvar58 int + gvar59 int + gvar60 int + gvar61 int + flag62 bool + gvar63 int + gvar64 int + gvar65 int + gvar66 int + gvar67 int + gvar68 int + ivar69 int + ivar70 int + obj71 [8]ns.ObjectID + wp72 [8]ns.WaypointID + gvar73 [8]int + ivar74 [8]int + gvar75 [8]ns.TimerID +) + +func init() { + gvar10 = 0 + gvar13 = 0 + flag14 = false + flag15 = false + flag16 = false + flag50 = false + flag51 = false + gvar52 = 0 + gvar53 = 1 + gvar54 = 2 + gvar55 = 3 + gvar56 = 4 + gvar57 = 5 + gvar58 = 6 + gvar60 = gvar52 + gvar61 = gvar55 + flag62 = false + gvar63 = 0 + gvar64 = 1 + gvar65 = 2 + gvar66 = 3 + gvar67 = 4 + gvar68 = 5 + ivar69 = 15 + ivar70 = 2 +} +func PlantBarrier() { + ivar11 = 0 + for { + if !(ivar11 < 6) { + goto LABEL1 + } + CreatePlant(ivar11) + ivar11 += 1 + } +LABEL1: + return +} +func CreatePlant(a1 int) { + obj9[a1] = ns.CreateObject("CarnivorousPlant", wp8[a1]) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj9[a1]), ns.GetObjectY(obj9[a1]), 0, 0) + ns.LookAtObject(obj9[a1], ns.GetHost()) + ns.SetOwner(obj4[0], obj9[a1]) + ns.SetCallback(obj9[a1], 7, AttackBack) +} +func CheckPlants() { + if !(flag15 == false || flag16 == false) { + goto LABEL1 + } + ivar11 = 0 + for { + if !(ivar11 < 6) { + goto LABEL2 + } + if !(ns.CurrentHealth(obj9[ivar11]) <= 0) { + goto LABEL3 + } + ns.FrameTimerWithArg(14, ivar11, PlantDie) + LABEL3: + ivar11 += 1 + } +LABEL2: + ns.FrameTimer(15, CheckPlants) +LABEL1: + return +} +func PlantDie(a1 int) { + if !(flag15 == false || flag16 == false) { + goto LABEL1 + } + ns.Delete(obj9[a1]) + CreatePlant(a1) +LABEL1: + return +} +func AttackBack() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Attack(ns.GetTrigger(), ns.GetCaller()) +LABEL1: + return +} +func PlayAction() { + ns.Music(26, 100) +} +func PlaySwamp() { + ns.Music(29, 100) +} +func DryadHuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func StartDryadSequence() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && flag14 == false) { + goto LABEL1 + } + flag14 = true + ns.SetOwner(obj4[0], obj4[1]) + ns.MusicPushEvent() + PlayAction() + ns.NoWallSound(true) + ns.WallGroupClose(gvar6) + ns.NoWallSound(false) + v0 = 0 + for { + if !(v0 < 2) { + goto LABEL2 + } + ns.ObjectOn(obj4[v0]) + ns.Enchant(obj4[v0], ns.ENCHANT_INVISIBLE, 1) + ns.MoveObject(obj4[v0], ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0])) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0]), 0, 0) + v0 += 1 + } +LABEL2: + PlantBarrier() + ns.FrameTimer(1, CheckPlants) +LABEL1: + return +} +func DryadDie() { + if !ns.IsTrigger(obj4[0]) { + goto LABEL1 + } + flag15 = true +LABEL1: + if !ns.IsTrigger(obj4[1]) { + goto LABEL2 + } + flag16 = true +LABEL2: + if !(flag15 == true && flag16 == true) { + goto LABEL3 + } + ns.NoWallSound(true) + ns.WallGroupOpen(gvar6) + ns.NoWallSound(false) + ns.MusicPopEvent() +LABEL3: + return +} +func DryadStay() { + if !(ns.IsCaller(obj4[0]) || ns.IsCaller(obj4[1])) { + goto LABEL1 + } + ivar12 = ns.Random(0, 4) + fvar17 = ns.GetWaypointX(wp7[ivar12]) + fvar18 = ns.GetWaypointY(wp7[ivar12]) + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 1.5) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(ns.GetCaller(), fvar17, fvar18) + ns.Effect(ns.BLUE_SPARKS, fvar17, fvar18, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar17, fvar18, 0, 0) +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func CaptainDialogStart() { + var v0 int + v0 = gvar60 + if v0 == gvar52 { + goto LABEL1 + } + if v0 == gvar53 { + goto LABEL2 + } + if v0 == gvar54 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainGreet") + goto LABEL4 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainLeave") + goto LABEL4 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainImpatient") + goto LABEL4 +LABEL4: + return +} +func CaptainDialogEnd() { + var v0 int + v0 = gvar60 + if v0 == gvar52 { + goto LABEL1 + } + if v0 == gvar53 { + goto LABEL2 + } + if v0 == gvar54 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.JournalEntry(ns.GetHost(), "FindMordwyn", 2) + ns.JournalEntry(ns.GetHost(), "FindOutpost", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + PlaySwamp() + gvar60 = gvar53 + goto LABEL4 +LABEL2: + gvar60 = gvar54 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func MordwynDialogStart() { + var v0 int + v0 = gvar61 + if v0 == gvar55 { + goto LABEL1 + } + if v0 == gvar56 { + goto LABEL2 + } + if v0 == gvar57 { + goto LABEL3 + } + if v0 == gvar58 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War09a:MordwynGreet") + goto LABEL5 +LABEL2: + ns.LookAtObject(obj19, ns.GetHost()) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.SwordsmanHurt, "War09a:MordwynHome") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War09a:MordwynHome2") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War09a:MordwynDone") + goto LABEL5 +LABEL5: + return +} +func MordwynDialogEnd() { + var v0 int + v0 = gvar61 + if v0 == gvar55 { + goto LABEL1 + } + if v0 == gvar56 { + goto LABEL2 + } + if v0 == gvar57 { + goto LABEL3 + } + if v0 == gvar58 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar61 = gvar56 + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.JournalEdit(ns.GetHost(), "FindMordwyn", 4) + ns.CancelDialog(obj19) + ns.SetCallback(obj19, 11, AllowDialog) + ns.Move(obj19, wp46) + goto LABEL5 +LABEL2: + gvar61 = gvar57 + ns.SetCallback(obj19, 11, GetArmorOfJandor) + ns.Move(obj19, wp47) + goto LABEL5 +LABEL3: + gvar61 = gvar58 + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.CreatureGuard(obj19, ns.GetWaypointX(wp46), ns.GetWaypointY(wp46), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetCallback(obj19, 11, NullFunction) + ns.Pickup(ns.GetHost(), obj23) + ns.Pickup(ns.GetHost(), obj24) + ns.PrintToAll("War09a:GainedArmor") + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func StartCaptainConversation() { + ns.SetDialog(obj20, ns.NORMAL, CaptainDialogStart, CaptainDialogEnd) + ns.StartDialog(obj20, ns.GetHost()) +} +func WispInitialize() { + obj71[0] = ns.Object("Wisp0") + gvar73[0] = gvar63 + wp72[0] = ns.Waypoint("Wisp0Dest") + obj71[1] = ns.Object("Wisp1") + gvar73[1] = gvar63 + wp72[1] = ns.Waypoint("Wisp1Dest") +} +func MapInitialize() { + obj20 = ns.Object("Jandor") + obj21 = ns.Object("Basket") + obj22 = ns.Object("BasketShadow") + obj19 = ns.Object("Mordwyn") + obj24 = ns.Object("JHelm") + obj23 = ns.Object("JBreast") + obj25 = ns.Object("PitElev01") + obj26 = ns.Object("PitElev02") + obj27 = ns.Object("PitElev03") + obj28 = ns.Object("TreasureTrap01") + obj29 = ns.Object("TreasureTrap01Light") + obj30 = ns.Object("Secret02Trigger") + obj4[0] = ns.Object("Dryad0") + obj4[1] = ns.Object("Dryad1") + gvar38 = ns.WallGroup("Surprise00Walls") + gvar39 = ns.WallGroup("Surprise00DestWalls") + gvar40 = ns.WallGroup("Surprise01Walls") + gvar41 = ns.WallGroup("Surprise01DWalls") + gvar42 = ns.WallGroup("Surprise02Walls") + gvar43 = ns.WallGroup("Surprise02DestWalls") + gvar44 = ns.WallGroup("TreasureTrap01Walls") + gvar6 = ns.WallGroup("DryadWalls") + gvar33 = ns.ObjectGroup("Surprise00Triggers") + gvar32 = ns.ObjectGroup("Surprise00Creatures") + gvar34 = ns.ObjectGroup("Surprise01Creatures") + gvar35 = ns.ObjectGroup("Surprise01Triggers") + gvar31 = ns.ObjectGroup("MordwynTriggers") + gvar36 = ns.ObjectGroup("TreasureTrap01Zombies") + gvar37 = ns.ObjectGroup("Secret01Triggers") + wp45 = ns.Waypoint("TalkToPlayer") + wp46 = ns.Waypoint("MordwynHome") + wp47 = ns.Waypoint("MordwynBedroom") + wp5[0] = ns.Waypoint("DryadHome0") + wp5[1] = ns.Waypoint("DryadHome1") + wp7[0] = ns.Waypoint("DryadWarp0") + wp7[1] = ns.Waypoint("DryadWarp1") + wp7[2] = ns.Waypoint("DryadWarp2") + wp7[3] = ns.Waypoint("DryadWarp3") + wp7[4] = ns.Waypoint("DryadWarp4") + wp8[0] = ns.Waypoint("PlantLoc0") + wp8[1] = ns.Waypoint("PlantLoc1") + wp8[2] = ns.Waypoint("PlantLoc2") + wp8[3] = ns.Waypoint("PlantLoc3") + wp8[4] = ns.Waypoint("PlantLoc4") + wp8[5] = ns.Waypoint("PlantLoc5") + wp48 = ns.Waypoint("WellWP") + wp49 = ns.Waypoint("PlayerSounds") + ns.UnBlind() + WispInitialize() + ns.StoryPic(obj20, "AirshipCaptainPic") + ns.StoryPic(obj19, "MordwynPic") + ns.SetDialog(obj19, ns.NORMAL, MordwynDialogStart, MordwynDialogEnd) + ns.StartupScreen(9) + ns.Music(0, 100) + ns.FrameTimer(5, StartCaptainConversation) + ns.ObjectOn(ns.Object("StayHere1")) + ns.Move(ns.Object("StayHere1"), ns.Waypoint("Here1")) + ns.ObjectOn(ns.Object("StayHere2")) + ns.Move(ns.Object("StayHere2"), ns.Waypoint("Here2")) + ns.ObjectOn(ns.Object("StayHere3")) + ns.Move(ns.Object("StayHere3"), ns.Waypoint("Here3")) + ns.ObjectOn(ns.Object("StayHere4")) + ns.Move(ns.Object("StayHere4"), ns.Waypoint("Here4")) + ns.ObjectOn(ns.Object("StayHere5")) + ns.Move(ns.Object("StayHere5"), ns.Waypoint("Here5")) +} +func MordwynGreet() { + ns.LookAtObject(obj19, ns.GetHost()) + ns.StartDialog(obj19, ns.GetHost()) + ns.SetCallback(obj19, 11, NullFunction) +} +func GetArmorOfJandor() { + ns.PauseObject(obj19, 75) + ns.SetCallback(obj19, 11, GiveArmorToPlayer) + ns.Move(obj19, wp46) +} +func GiveArmorToPlayer() { + ns.LookAtObject(obj19, ns.GetHost()) + ns.StartDialog(obj19, ns.GetHost()) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func CapTakeoff() { + if !(ns.IsCaller(ns.GetHost()) && flag51 == false) { + goto LABEL1 + } + flag51 = true + ns.Delete(obj21) + ns.Delete(obj22) + ns.Delete(obj20) +LABEL1: + return +} +func NullFunction() { +} +func MordwynMove() { + ns.ObjectGroupOff(gvar31) + ns.ObjectOn(obj19) + ns.SetOwner(ns.GetHost(), obj19) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.Move(obj19, wp45) +} +func AllowDialog() { + ns.CreatureGuard(obj19, ns.GetWaypointX(wp46), ns.GetWaypointY(wp46), ns.GetWaypointX(wp45), ns.GetWaypointY(wp45), 0) + ns.SetDialog(obj19, ns.NORMAL, MordwynDialogStart, MordwynDialogEnd) +} +func Surprise00() { + ns.ObjectGroupOff(gvar33) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar38) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar39) + ns.ObjectGroupOn(gvar32) + ns.GroupWander(gvar32) +} +func Surprise01() { + ns.ObjectGroupOff(gvar35) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar40) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar41) + ns.ObjectGroupOn(gvar34) +} +func Secret01Declare() { + ns.ObjectGroupOff(gvar37) + ns.MoveWaypoint(wp49, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp49) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func Secret02Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp49, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp49) + ns.GiveXp(ns.GetHost(), 100) +} +func EnablePitElev01() { + ns.ObjectOn(obj25) +} +func EnablePitElev02() { + ns.ObjectOn(obj26) +} +func EnablePitElev03() { + ns.ObjectOn(obj27) +} +func TriggerTreasureTrap() { + ns.WallGroupBreak(gvar44) + ns.ObjectOff(obj29) + ns.GroupAggressionLevel(gvar36, 0.83) + ns.GroupWander(gvar36) +} +func MapEntry() { + ns.NoWallSound(false) +} +func whichWisp(a1 ns.ObjectID) int { + var v0 int + v0 = 0 + for { + if !(v0 < ivar70) { + goto LABEL1 + } + if obj71[v0] != a1 { + goto LABEL2 + } + return v0 + LABEL2: + v0 += 1 + } +LABEL1: + return -1 + return 1 +} +func WispAction(a1 int) { + var ( + v0 float32 + v1 int + ) + v1 = gvar73[a1] + if v1 == gvar64 { + goto LABEL1 + } + if v1 == gvar66 { + goto LABEL2 + } + if v1 == gvar65 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Distance(ns.GetObjectX(obj71[a1]), ns.GetObjectY(obj71[a1]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v0 < 70) { + goto LABEL5 + } + gvar73[a1] = gvar65 + ns.Move(obj71[a1], wp72[a1]) +LABEL5: + goto LABEL4 +LABEL2: + ns.LookAtObject(obj71[a1], ns.GetHost()) + ivar74[a1] += 1 + if !(ivar74[a1] > 4) { + goto LABEL6 + } + gvar73[a1] = gvar64 + ns.CreatureFollow(obj71[a1], ns.GetHost()) +LABEL6: + goto LABEL4 +LABEL3: + v0 = ns.Distance(ns.GetObjectX(obj71[a1]), ns.GetObjectY(obj71[a1]), ns.GetWaypointX(wp72[a1]), ns.GetWaypointY(wp72[a1])) + if !(v0 < 30) { + goto LABEL7 + } + gvar73[a1] = gvar67 + ns.CreatureIdle(obj71[a1]) + return +LABEL7: + goto LABEL4 +LABEL4: + ns.FrameTimerWithArg(ivar69, a1, WispAction) +} +func WispRecognize() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar73[v0] + if v1 == gvar63 { + goto LABEL3 + } + if v1 == gvar66 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + gvar73[v0] = gvar64 + ns.CreatureFollow(ns.GetTrigger(), ns.GetCaller()) + gvar75[v0] = ns.FrameTimerWithArg(ivar69, v0, WispAction) + goto LABEL5 +LABEL4: + gvar73[v0] = gvar65 + ns.Move(ns.GetTrigger(), wp72[v0]) + goto LABEL5 +LABEL5: + return +} +func WispLoseSight() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar73[v0] + if v1 == gvar65 { + goto LABEL3 + } + goto LABEL4 +LABEL3: + gvar73[v0] = gvar66 + ivar74[v0] = 0 + ns.CreatureIdle(ns.GetTrigger()) + goto LABEL4 +LABEL4: + return +} +func WispGetMad() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) + v0 = whichWisp(ns.GetTrigger()) + if !(v0 >= 0) { + goto LABEL1 + } + gvar73[v0] = gvar68 + ns.CancelTimer(gvar75[v0]) +LABEL1: + return +} +func WispMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp48) +} +func PlayMordwyn() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(21, 100) +LABEL1: + return +} +func PlayOgre() { + ns.Music(7, 100) +} +func PlayCaves() { + ns.Music(18, 100) +} +func PlayWasteland() { + ns.Music(19, 100) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war09b/dummy_test.go b/examples/war09b/dummy_test.go new file mode 100644 index 0000000..a44fe09 --- /dev/null +++ b/examples/war09b/dummy_test.go @@ -0,0 +1,6 @@ +package war09b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war09b/war09b.go b/examples/war09b/war09b.go new file mode 100644 index 0000000..86659e8 --- /dev/null +++ b/examples/war09b/war09b.go @@ -0,0 +1,808 @@ +package war09b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.ObjectGroupID + gvar28 ns.ObjectGroupID + gvar29 ns.ObjectGroupID + gvar30 ns.ObjectGroupID + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + gvar34 ns.ObjectGroupID + gvar35 ns.ObjectGroupID + gvar36 ns.ObjectGroupID + gvar37 ns.WallGroupID + gvar38 ns.WallGroupID + gvar39 ns.WallGroupID + gvar40 ns.WallGroupID + gvar41 ns.WallGroupID + gvar42 ns.WallGroupID + wp43 ns.WaypointID + wp44 ns.WaypointID + wp45 [9]ns.WaypointID + wp46 [3]ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + flag53 bool + gvar54 int + gvar55 int + gvar56 int + gvar57 int + gvar58 int + obj59 [9]ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + gvar62 int + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + gvar68 int + gvar69 int + gvar70 int + gvar71 int + gvar72 int + gvar73 int + ivar74 int + ivar75 int + obj76 [8]ns.ObjectID + wp77 [8]ns.WaypointID + gvar78 [8]int + ivar79 [8]int + gvar80 [8]ns.TimerID +) + +func init() { + flag53 = false + gvar54 = 0 + gvar55 = 1 + gvar56 = 2 + gvar57 = 3 + gvar58 = 4 + gvar62 = gvar54 + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + gvar68 = 0 + gvar69 = 1 + gvar70 = 2 + gvar71 = 3 + gvar72 = 4 + gvar73 = 5 + ivar74 = 15 + ivar75 = 2 +} +func PlaySwamp() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(29, 100) +LABEL1: + return +} +func PlaySwamp2() { + ns.Music(29, 100) +} +func PlayAction() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(26, 100) +LABEL1: + return +} +func PlayOgre() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(7, 100) +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func AidanDialogStart() { + var v0 int + v0 = gvar62 + if v0 == gvar54 { + goto LABEL1 + } + if v0 == gvar55 { + goto LABEL2 + } + if v0 == gvar56 { + goto LABEL3 + } + if v0 == gvar57 { + goto LABEL4 + } + if v0 == gvar58 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.DestroyChat(obj5) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanGreet1") + flag53 = true + goto LABEL6 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanGreet2") + goto LABEL6 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanWaiting") + goto LABEL6 +LABEL4: + ns.DestroyChat(obj5) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanThankful") + goto LABEL6 +LABEL5: + ns.DestroyChat(obj5) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanLeaving") + goto LABEL6 +LABEL6: + return +} +func AidanDialogEnd() { + var v0 int + v0 = gvar62 + if v0 == gvar54 { + goto LABEL1 + } + if v0 == gvar55 { + goto LABEL2 + } + if v0 == gvar56 { + goto LABEL3 + } + if v0 == gvar57 { + goto LABEL4 + } + if v0 == gvar58 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + gvar62 = gvar55 + goto LABEL6 +LABEL2: + gvar62 = gvar56 + goto LABEL6 +LABEL3: + goto LABEL6 +LABEL4: + flag53 = true + flag66 = true + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.CancelDialog(obj5) + ns.GiveXp(ns.GetHost(), 1000) + ns.Pickup(ns.GetHost(), obj24) + ns.PrintToAll("GeneralPrint:FindScroll") + ns.CreatureFollow(obj5, ns.GetHost()) + ns.AggressionLevel(obj5, 0.5) + ns.SetOwner(ns.GetHost(), obj5) + ns.BecomePet(obj5) + goto LABEL6 +LABEL5: + goto LABEL6 +LABEL6: + return +} +func WispInitialize() { + obj76[0] = ns.Object("Wisp2") + gvar78[0] = gvar68 + wp77[0] = ns.Waypoint("Wisp2Dest") + obj76[1] = ns.Object("Wisp3") + gvar78[1] = gvar68 + wp77[1] = ns.Waypoint("Wisp3Dest") +} +func MapInitialize() { + obj5 = ns.Object("Aidan") + obj6 = ns.Object("DeadPrisoner") + obj7 = ns.Object("Mystic_Brotherhood") + obj8 = ns.Object("OgreCageDoor01") + obj9 = ns.Object("CheckRescueTrigger") + obj10 = ns.Object("PitElev02") + obj11 = ns.Object("PitElev03") + obj12 = ns.Object("CryptTrigger01") + obj13 = ns.Object("CryptEnd1") + obj14 = ns.Object("CryptDoor3") + obj15 = ns.Object("CryptDoor4") + obj16 = ns.Object("CryptGuardian") + obj17 = ns.Object("UrchinCageDoor") + obj18 = ns.Object("UrchinShaman") + obj19 = ns.Object("Urchin1") + obj20 = ns.Object("Urchin2") + obj21 = ns.Object("Urchin3") + obj22 = ns.Object("Urchin4") + obj4 = ns.Object("Necromancer") + obj23 = ns.Object("OgreDude") + obj24 = ns.Object("WarlordScroll") + gvar37 = ns.WallGroup("Surprise02Walls") + gvar38 = ns.WallGroup("Surprise02DestWalls") + gvar39 = ns.WallGroup("GraveyardTrapWalls") + gvar40 = ns.WallGroup("GraveyardTrapWalls2") + gvar41 = ns.WallGroup("CryptWall01") + gvar42 = ns.WallGroup("SubGraveyardWalls") + gvar25 = ns.ObjectGroup("GraveyardTrapEnemies") + gvar26 = ns.ObjectGroup("TriggerGroup01") + gvar27 = ns.ObjectGroup("TriggerGroup02") + gvar28 = ns.ObjectGroup("SubGraveyardTriggers") + gvar29 = ns.ObjectGroup("SubGraveyardCreatures") + gvar30 = ns.ObjectGroup("CryptGuardianTriggers") + gvar31 = ns.ObjectGroup("CryptWarriorTriggers") + gvar32 = ns.ObjectGroup("UrchinPrisoners") + gvar33 = ns.ObjectGroup("Secret03Enemies") + gvar34 = ns.ObjectGroup("Secret03Triggers") + gvar35 = ns.ObjectGroup("Secret04Triggers") + gvar36 = ns.ObjectGroup("Secret06Triggers") + wp45[0] = ns.Waypoint("CreateWP1") + wp45[1] = ns.Waypoint("CreateWP2") + wp45[2] = ns.Waypoint("CreateWP3") + wp45[3] = ns.Waypoint("CreateWP4") + wp45[4] = ns.Waypoint("CreateWP5") + wp45[5] = ns.Waypoint("CreateWP6") + wp45[6] = ns.Waypoint("CreateWP7") + wp45[7] = ns.Waypoint("CreateWP8") + wp45[8] = ns.Waypoint("CreateWP9") + wp43 = ns.Waypoint("VileZombieCreateWP01") + wp44 = ns.Waypoint("GhostCreateWP01") + wp49 = ns.Waypoint("FaceHereWP") + wp46[0] = ns.Waypoint("TeleWP1") + wp46[1] = ns.Waypoint("TeleWP2") + wp46[2] = ns.Waypoint("TeleWP3") + wp47 = ns.Waypoint("CryptGuardianEntrance") + wp48 = ns.Waypoint("CryptWarriorEntrance") + wp50 = ns.Waypoint("AidanWait") + wp51 = ns.Waypoint("AidanLook") + wp52 = ns.Waypoint("PlayerSounds") + ns.LockDoor(obj17) + ns.UnBlind() + WispInitialize() + ns.StoryPic(obj5, "AidanPic") + ns.SetDialog(obj5, ns.NORMAL, AidanDialogStart, AidanDialogEnd) + ns.SetOwner(obj23, obj5) + ns.Damage(obj6, 0, 50, 8) +} +func AidanRescued() { + ns.ObjectOff(obj9) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + gvar62 = gvar57 + ns.StartDialog(obj5, ns.GetHost()) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func AidanNearPlayer() { + if !(flag53 == false && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + ns.Chat(obj5, "War09a:AidanPlea") + if flag65 { + goto LABEL1 + } + ns.ClearOwner(obj5) + ns.SetOwner(ns.GetHost(), obj5) + flag65 = true +LABEL1: + return +} +func CheckRescue() { + if ns.IsLocked(obj8) { + goto LABEL1 + } + if !(ns.CurrentHealth(obj5) > 0) { + goto LABEL1 + } + AidanRescued() +LABEL1: + return +} +func AidanMustGo() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + PlayOgre() +LABEL1: + if !(ns.IsCaller(ns.GetHost()) && flag64 == false) { + goto LABEL2 + } + flag64 = true + ns.GiveXp(ns.GetHost(), 500) + ns.JournalEdit(ns.GetHost(), "FindOutpost", 4) + ns.JournalEntry(ns.GetHost(), "FindLOTD", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL2: + if !(ns.IsCaller(ns.GetHost()) && flag66 == true && ns.CurrentHealth(obj5) > 0 && flag67 == false) { + goto LABEL3 + } + flag67 = true + ns.RestoreHealth(obj5, 120) + ns.SetDialog(obj5, ns.NORMAL, AidanDialogStart, AidanDialogEnd) + gvar62 = gvar58 + ns.CreatureGuard(obj5, ns.GetWaypointX(wp50), ns.GetWaypointY(wp50), ns.GetWaypointX(wp51), ns.GetWaypointY(wp51), 0) + ns.BecomeEnemy(obj5) + ns.SetOwner(ns.GetHost(), obj5) +LABEL3: + return +} +func DestroyAidan() { + if !flag67 { + goto LABEL1 + } + ns.Delete(obj5) +LABEL1: + return +} +func Secret03Declare() { + ns.ObjectGroupOff(gvar34) + ns.ObjectGroupOn(gvar33) + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp52) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 5) +} +func Secret04Declare() { + ns.ObjectGroupOff(gvar35) + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp52) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +} +func Secret05Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp52) + ns.GiveXp(ns.GetHost(), 100) +} +func Secret06Declare() { + ns.ObjectGroupOff(gvar36) + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp52) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func EnablePitElev02() { + ns.ObjectOn(obj10) +} +func EnablePitElev03() { + ns.ObjectOn(obj11) +} +func GraveyardCreateOrders() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + ) + v0 = ns.GetWaypointX(wp43) + v1 = ns.GetWaypointY(wp43) + v2 = ns.GetWaypointX(wp44) + v3 = ns.GetWaypointY(wp44) + v4 = ns.GetWaypointX(wp49) + v5 = ns.GetWaypointY(wp49) + ns.LookWithAngle(obj60, 224) + ns.LookWithAngle(obj61, 192) + ns.CreatureGuard(obj60, v0, v1, v4, v5, 500) + ns.CreatureGuard(obj61, v2, v3, v4, v5, 500) +} +func GraveyardTrapTrigger() { + ns.ObjectGroupOff(gvar26) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar39) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar40) + ns.ObjectGroupOn(gvar25) + obj60 = ns.CreateObject("VileZombie", wp43) + obj61 = ns.CreateObject("Ghost", wp44) + ns.FrameTimer(1, GraveyardCreateOrders) +} +func SubGraveSurprise() { + ns.ObjectGroupOff(gvar28) + ns.ObjectGroupOn(gvar29) + ns.WallGroupBreak(gvar42) +} +func CryptGuardian() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp47) + v1 = ns.GetWaypointY(wp47) + ns.ObjectGroupOff(gvar30) + ns.LockDoor(obj14) + ns.LockDoor(obj15) + ns.ObjectOn(obj16) + ns.Enchant(obj16, ns.ENCHANT_INVISIBLE, 2) + ns.MoveObject(obj16, v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func TurnInvisible() { + ns.Enchant(obj16, ns.ENCHANT_INVISIBLE, 1.5) +} +func UnlockCryptDoors2() { + ns.UnlockDoor(obj14) + ns.UnlockDoor(obj15) +} +func CreatureOrders() { + var v0 int + v0 = 0 + for { + if !(v0 < 9) { + goto LABEL1 + } + ns.SetRoamFlag(obj59[v0], 1) + ns.Wander(obj59[v0]) + ns.AggressionLevel(obj59[v0], 0.83) + v0 += 1 + } +LABEL1: + return +} +func CreateZombies01() { + var v0 int + ns.ObjectGroupOff(gvar27) + ns.ObjectOn(obj4) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar37) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar38) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + obj59[v0] = ns.CreateObject("Zombie", wp45[v0]) + v0 += 1 + } +LABEL1: + v0 = 5 + for { + if !(v0 < 7) { + goto LABEL3 + } + obj59[v0] = ns.CreateObject("Ghost", wp45[v0]) + v0 += 1 + } +LABEL3: + v0 = 7 + for { + if !(v0 < 9) { + goto LABEL5 + } + obj59[v0] = ns.CreateObject("VileZombie", wp45[v0]) + v0 += 1 + } +LABEL5: + ns.FrameTimer(1, CreatureOrders) +} +func NecroTeleport() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 2) + v0 = ns.GetWaypointX(wp46[v2]) + v1 = ns.GetWaypointY(wp46[v2]) + if !ns.IsCaller(obj4) { + goto LABEL1 + } + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 1) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(obj4, v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + PlaySwamp() +LABEL2: + return +} +func NecroTeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 2) + v0 = ns.GetWaypointX(wp46[v2]) + v1 = ns.GetWaypointY(wp46[v2]) + ns.PauseObject(ns.GetTrigger(), 15) + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func FreeUrchins01() { + ns.UnlockDoor(obj17) + if flag63 { + goto LABEL1 + } + flag63 = true + ns.SetOwner(ns.GetHost(), obj19) + ns.SetOwner(ns.GetHost(), obj20) + ns.SetOwner(ns.GetHost(), obj21) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj18) + ns.SetRoamFlag(obj18, 1) + ns.SetRoamFlag(obj19, 1) + ns.SetRoamFlag(obj20, 1) + ns.SetRoamFlag(obj21, 1) + ns.SetRoamFlag(obj22, 1) + ns.AggressionLevel(obj18, 0.83) + ns.AggressionLevel(obj19, 0.83) + ns.AggressionLevel(obj20, 0.83) + ns.AggressionLevel(obj21, 0.83) + ns.AggressionLevel(obj22, 0.83) +LABEL1: + return +} +func LockUrchinCage() { + ns.LockDoor(obj17) +} +func HurtUrchins01() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.RunAway(ns.GetTrigger(), ns.GetCaller(), 120) +LABEL1: + return +} +func MapEntry() { + ns.NoWallSound(false) +} +func whichWisp(a1 ns.ObjectID) int { + var v0 int + v0 = 0 + for { + if !(v0 < ivar75) { + goto LABEL1 + } + if obj76[v0] != a1 { + goto LABEL2 + } + return v0 + LABEL2: + v0 += 1 + } +LABEL1: + return -1 + return 1 +} +func WispAction(a1 int) { + var ( + v0 float32 + v1 int + ) + v1 = gvar78[a1] + if v1 == gvar69 { + goto LABEL1 + } + if v1 == gvar71 { + goto LABEL2 + } + if v1 == gvar70 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Distance(ns.GetObjectX(obj76[a1]), ns.GetObjectY(obj76[a1]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v0 < 70) { + goto LABEL5 + } + gvar78[a1] = gvar70 + ns.Move(obj76[a1], wp77[a1]) +LABEL5: + goto LABEL4 +LABEL2: + ns.LookAtObject(obj76[a1], ns.GetHost()) + ivar79[a1] += 1 + if !(ivar79[a1] > 4) { + goto LABEL6 + } + gvar78[a1] = gvar69 + ns.CreatureFollow(obj76[a1], ns.GetHost()) +LABEL6: + goto LABEL4 +LABEL3: + v0 = ns.Distance(ns.GetObjectX(obj76[a1]), ns.GetObjectY(obj76[a1]), ns.GetWaypointX(wp77[a1]), ns.GetWaypointY(wp77[a1])) + if !(v0 < 30) { + goto LABEL7 + } + gvar78[a1] = gvar72 + ns.CreatureIdle(obj76[a1]) + return +LABEL7: + goto LABEL4 +LABEL4: + ns.FrameTimerWithArg(ivar74, a1, WispAction) +} +func WispRecognize() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar78[v0] + if v1 == gvar68 { + goto LABEL3 + } + if v1 == gvar71 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + gvar78[v0] = gvar69 + ns.CreatureFollow(ns.GetTrigger(), ns.GetCaller()) + gvar80[v0] = ns.FrameTimerWithArg(ivar74, v0, WispAction) + goto LABEL5 +LABEL4: + gvar78[v0] = gvar70 + ns.Move(ns.GetTrigger(), wp77[v0]) + goto LABEL5 +LABEL5: + return +} +func WispLoseSight() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar78[v0] + if v1 == gvar70 { + goto LABEL3 + } + goto LABEL4 +LABEL3: + gvar78[v0] = gvar71 + ivar79[v0] = 0 + ns.CreatureIdle(ns.GetTrigger()) + goto LABEL4 +LABEL4: + return +} +func WispGetMad() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) + v0 = whichWisp(ns.GetTrigger()) + if !(v0 >= 0) { + goto LABEL1 + } + gvar78[v0] = gvar73 + ns.CancelTimer(gvar80[v0]) +LABEL1: + return +} +func WispMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war09c/dummy_test.go b/examples/war09c/dummy_test.go new file mode 100644 index 0000000..6a9fecb --- /dev/null +++ b/examples/war09c/dummy_test.go @@ -0,0 +1,6 @@ +package war09c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war09c/war09c.go b/examples/war09c/war09c.go new file mode 100644 index 0000000..a548455 --- /dev/null +++ b/examples/war09c/war09c.go @@ -0,0 +1,565 @@ +package war09c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + gvar55 ns.ObjectGroupID + gvar56 ns.ObjectGroupID + gvar57 ns.ObjectGroupID + gvar58 ns.ObjectGroupID + gvar59 ns.ObjectGroupID + gvar60 ns.ObjectGroupID + gvar61 ns.ObjectGroupID + gvar62 ns.ObjectGroupID + gvar63 ns.ObjectGroupID + gvar64 ns.ObjectGroupID + gvar65 ns.ObjectGroupID + gvar66 [6]ns.ObjectGroupID + gvar67 ns.ObjectGroupID + gvar68 ns.ObjectGroupID + gvar69 ns.WallGroupID + gvar70 ns.WallGroupID + gvar71 ns.WallGroupID + gvar72 ns.WallGroupID + gvar73 ns.WallGroupID + gvar74 ns.WallGroupID + wp75 ns.WaypointID + wp76 ns.WaypointID + wp77 ns.WaypointID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + wp90 ns.WaypointID + wp91 ns.WaypointID + wp92 ns.WaypointID + wp93 ns.WaypointID + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + wp97 ns.WaypointID + flag98 bool + flag99 bool + ivar100 int + ivar101 int + gvar102 int + gvar103 int + ivar104 int + obj105 ns.ObjectID +) + +func init() { + flag99 = true + ivar100 = 22 + ivar101 = ivar100 + ivar104 = 0 + flag98 = true +} +func ToggleSpikes1() { + ns.ObjectGroupToggle(gvar61) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP01")) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP06")) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP09")) + ns.FrameTimer(60, ToggleSpikes2) +} +func ToggleSpikes2() { + ns.ObjectGroupToggle(gvar62) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP04")) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP07")) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP12")) + ns.FrameTimer(60, ToggleSpikes1) +} +func GoToPost() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp94) + v1 = ns.GetWaypointY(wp94) + v2 = ns.GetWaypointX(wp95) + v3 = ns.GetWaypointY(wp95) + ns.CreatureGuard(obj28, v0, v1, v2, v3, 100) +} +func SwitchSpikeState() { + ns.ObjectGroupOff(gvar66[ivar104]) + if !flag99 { + goto LABEL1 + } + ivar104 += 1 + if !(ivar104 > 5) { + goto LABEL2 + } + ivar104 = 0 +LABEL2: + ns.ObjectGroupOn(gvar66[ivar104]) + ns.AudioEvent(ns.FloorSpikesUp, wp97) + ns.FrameTimer(30, SwitchSpikeState) + goto LABEL3 +LABEL1: + return +LABEL3: + return +} +func CloseWalls() { + ns.WallGroupClose(gvar69) + ns.WallGroupClose(gvar70) +} +func PlayCaves() { + ns.Music(18, 100) +} +func PlayAction() { + ns.MusicPushEvent() + ns.Music(26, 100) +} +func MapEntry() { + PlayCaves() + ns.NoWallSound(false) +} +func Secret01Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 500) +} +func Secret01Exit() { + ns.WallGroupOpen(gvar71) +} +func Secret02Declare() { + ns.ObjectGroupOff(gvar68) + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 250) +} +func Secret03Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 50) +} +func Secret04Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 100) +} +func SpikeTimerAudioLoop() { + if flag98 { + goto LABEL1 + } + ns.AudioEvent(ns.Gear1, wp75) + ns.FrameTimer(ivar101, SpikeTimerAudioLoop) + ivar101 -= 1 + goto LABEL2 +LABEL1: + ns.AudioEvent(ns.TriggerPressed, wp75) +LABEL2: + return +} +func ResetOgreSpikeDoor01() { + ns.ObjectOn(obj4) + ns.ObjectOn(obj5) + ns.ObjectGroupOn(gvar55) + ns.LockDoor(obj6) + flag98 = true + ivar101 = ivar100 +} +func ToggleOgreTrapSpikes01() { + ns.ObjectOff(obj4) + ns.ObjectOff(obj5) + ns.ObjectGroupOff(gvar55) + if !flag98 { + goto LABEL1 + } + ns.UnlockDoor(obj6) + flag98 = false + SpikeTimerAudioLoop() + ns.FrameTimer(150, ResetOgreSpikeDoor01) + goto LABEL2 +LABEL1: + ns.LockDoor(obj6) + flag98 = true +LABEL2: + return +} +func MoveBlocks01() { + ns.ObjectGroupOff(gvar57) + ns.ObjectGroupOff(gvar58) + PlayAction() + ns.Move(obj7, wp76) + ns.Move(obj8, wp77) + ns.Move(obj9, wp78) + ns.Move(obj10, wp79) + ns.Move(obj11, wp80) + ns.Move(obj12, wp81) + ns.Move(obj13, wp82) + ns.Move(obj14, wp83) + ns.Move(obj15, wp84) + ns.Move(obj16, wp85) + ns.Move(obj17, wp86) + ns.Move(obj18, wp87) + ns.WallGroupOpen(gvar69) + ns.ObjectOn(obj21) + ns.Wander(obj21) +} +func CallNextOgre() { + ns.WallGroupOpen(gvar70) + ns.ObjectOn(obj22) + ns.Wander(obj22) +} +func MoveBlocks02() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp90) + v1 = ns.GetWaypointY(wp90) + ns.MoveObject(obj19, v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.AudioEvent(ns.KeyDrop, wp90) + ns.ObjectOn(obj20) + ns.Move(obj9, wp88) + ns.Move(obj10, wp89) + ns.Move(obj7, wp78) + ns.Move(obj8, wp79) + ns.FrameTimer(45, CloseWalls) + ns.MusicPopEvent() +} +func OpenWayOut() { + ns.WallGroupOpen(gvar74) +} +func GetBuddy() { + ns.RetreatLevel(obj23, 0) + ns.Move(obj23, wp91) +} +func FollowOgrePatrol01() { + if !ns.IsCaller(obj23) { + goto LABEL1 + } + ns.CreatureFollow(ns.GetTrigger(), obj23) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.Walk(obj23, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL1: + return +} +func WaitASec() { + ns.PauseObject(ns.GetTrigger(), 30) +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func SpikeHall() { + ns.ObjectGroupOff(gvar59) + ns.ObjectGroupOn(gvar60) + ToggleSpikes1() +} +func PressButton() { + ns.AudioEvent(ns.GruntRecognize, wp93) + ns.Move(obj28, wp92) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.AggressionLevel(obj31, 0.83) + ns.FrameTimer(60, GoToPost) +} +func OgrePressButton() { + ns.FrameTimer(10, PressButton) +} +func LockCageDoor() { + if ns.IsLocked(obj32) { + goto LABEL1 + } + ns.LockDoor(obj32) + goto LABEL2 +LABEL1: + ns.UnlockDoor(obj32) +LABEL2: + return +} +func FoundTreasureTrove() { + ns.PrintToAll("War09c:FoundTrove") + ns.GiveXp(ns.GetHost(), 1000) +} +func ToggleElevatorGroup3() { + ns.ObjectGroupToggle(gvar65) +} +func ToggleElevatorGroup1() { + ns.ObjectGroupToggle(gvar63) +} +func StartSpikes() { + ns.ObjectGroupOff(gvar67) + ns.LockDoor(obj33) + ns.FrameTimer(60, SwitchSpikeState) +} +func UnlockSpikeSegRoomDoor() { + ns.UnlockDoor(obj33) + flag99 = false +} +func CallSpitter1() { + ns.Wander(obj35) +} +func SetSpitter1PathColor() { + ns.SetRoamFlag(obj35, 1|128) +} +func LockPitDoor() { + ns.LockDoor(obj34) +} +func UnlockPitDoor() { + ns.UnlockDoor(obj34) +} +func ReleaseA() { + ns.UnlockDoor(obj36) + ns.UnlockDoor(obj37) + ns.CreatureHunt(obj48) +} +func ReleaseB() { + ns.UnlockDoor(obj38) + ns.UnlockDoor(obj39) + ns.CreatureHunt(obj49) +} +func ReleaseC() { + ns.UnlockDoor(obj40) + ns.UnlockDoor(obj41) + ns.CreatureHunt(obj50) +} +func ReleaseD() { + ns.UnlockDoor(obj42) + ns.UnlockDoor(obj43) + ns.CreatureHunt(obj51) +} +func ReleaseE() { + ns.UnlockDoor(obj44) + ns.UnlockDoor(obj45) + ns.CreatureHunt(obj52) +} +func ReleaseF() { + ns.UnlockDoor(obj46) + ns.UnlockDoor(obj47) + ns.CreatureHunt(obj53) +} +func ToggleElevatorGroup2() { + ns.ObjectOff(obj54) + ns.ObjectGroupToggle(gvar64) + ns.GiveXp(ns.GetHost(), 2500) +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func MapInitialize() { + obj6 = ns.Object("OgreSpikeDoor01") + obj4 = ns.Object("OgreTrapSpikePlate01") + obj5 = ns.Object("OgreTrapSpikeSwitch01") + obj7 = ns.Object("Block01") + obj8 = ns.Object("Block02") + obj9 = ns.Object("Block03") + obj10 = ns.Object("Block04") + obj11 = ns.Object("Block05") + obj12 = ns.Object("Block06") + obj13 = ns.Object("Block07") + obj14 = ns.Object("Block08") + obj15 = ns.Object("Block09") + obj16 = ns.Object("Block10") + obj17 = ns.Object("Block11") + obj18 = ns.Object("Block12") + obj19 = ns.Object("SilverKey") + obj20 = ns.Object("SilverKeyLight") + obj21 = ns.Object("OgreFighter01") + obj22 = ns.Object("OgreFighter02") + obj23 = ns.Object("OgrePatrol01") + obj24 = ns.Object("OgrePatrol02") + obj25 = ns.Object("OgrePatrol03") + obj26 = ns.Object("OgrePatrolBuddy01") + obj27 = ns.Object("OgrePatrolBuddy02") + obj28 = ns.Object("ButtonPresser") + obj29 = ns.Object("OgrePsycho01") + obj30 = ns.Object("OgrePsycho02") + obj31 = ns.Object("OgrePsycho03") + obj32 = ns.Object("CageDoor") + obj33 = ns.Object("SpikeSegRoomDoor") + obj34 = ns.Object("CrumblingPitDoor") + obj36 = ns.Object("CreaturePitDoorA1") + obj37 = ns.Object("CreaturePitDoorA2") + obj38 = ns.Object("CreaturePitDoorB1") + obj39 = ns.Object("CreaturePitDoorB2") + obj40 = ns.Object("CreaturePitDoorC1") + obj41 = ns.Object("CreaturePitDoorC2") + obj42 = ns.Object("CreaturePitDoorD1") + obj43 = ns.Object("CreaturePitDoorD2") + obj44 = ns.Object("CreaturePitDoorE1") + obj45 = ns.Object("CreaturePitDoorE2") + obj46 = ns.Object("CreaturePitDoorF1") + obj47 = ns.Object("CreaturePitDoorF2") + obj48 = ns.Object("CreatureA") + obj49 = ns.Object("CreatureB") + obj50 = ns.Object("CreatureC") + obj51 = ns.Object("CreatureD") + obj52 = ns.Object("CreatureE") + obj53 = ns.Object("CreatureF") + obj105 = ns.Object("CreaturePitElev") + obj54 = ns.Object("CreaturePitSwitch") + gvar55 = ns.ObjectGroup("OgreTrapSpikes01") + gvar57 = ns.ObjectGroup("BlockTrigger01") + gvar56 = ns.ObjectGroup("BlockMoverGroup01") + gvar58 = ns.ObjectGroup("SecretLight01") + gvar59 = ns.ObjectGroup("SpikeHallTriggers") + gvar60 = ns.ObjectGroup("SpikeMoverGroup") + gvar61 = ns.ObjectGroup("HallSpikes1") + gvar62 = ns.ObjectGroup("HallSpikes2") + gvar66[0] = ns.ObjectGroup("SpikeSeg01") + gvar66[1] = ns.ObjectGroup("SpikeSeg02") + gvar66[2] = ns.ObjectGroup("SpikeSeg03") + gvar66[3] = ns.ObjectGroup("SpikeSeg04") + gvar66[4] = ns.ObjectGroup("SpikeSeg05") + gvar66[5] = ns.ObjectGroup("SpikeSeg06") + gvar67 = ns.ObjectGroup("SpikeSegTriggers") + gvar68 = ns.ObjectGroup("Secret02Triggers") + gvar63 = ns.ObjectGroup("ElevatorGroup1") + gvar64 = ns.ObjectGroup("ElevatorGroup2") + gvar65 = ns.ObjectGroup("ElevatorGroup3") + gvar69 = ns.WallGroup("SecretWallGroup01") + gvar70 = ns.WallGroup("SecretWallGroup02") + gvar71 = ns.WallGroup("Secret01Wall") + gvar72 = ns.WallGroup("SecretHallWalls01") + gvar73 = ns.WallGroup("CreaturePitWalls") + gvar74 = ns.WallGroup("WayOut") + wp75 = ns.Waypoint("SpikeTimerAudioOrigin") + wp76 = ns.Waypoint("BlockWP01") + wp77 = ns.Waypoint("BlockWP02") + wp78 = ns.Waypoint("BlockWP03") + wp79 = ns.Waypoint("BlockWP04") + wp80 = ns.Waypoint("BlockWP05") + wp81 = ns.Waypoint("BlockWP06") + wp82 = ns.Waypoint("BlockWP07") + wp83 = ns.Waypoint("BlockWP08") + wp84 = ns.Waypoint("BlockWP09") + wp85 = ns.Waypoint("BlockWP10") + wp86 = ns.Waypoint("BlockWP11") + wp87 = ns.Waypoint("BlockWP12") + wp88 = ns.Waypoint("BlockWP13") + wp89 = ns.Waypoint("BlockWP14") + wp90 = ns.Waypoint("SilverKeySpot") + wp91 = ns.Waypoint("BuddyWP") + wp92 = ns.Waypoint("ButtonLocationWP") + wp93 = ns.Waypoint("OgreAudioOrigin") + wp94 = ns.Waypoint("PostWP") + wp95 = ns.Waypoint("FacingWP") + wp96 = ns.Waypoint("PlayerSounds") + wp97 = ns.Waypoint("RoomSounds") + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.LockDoor(obj38) + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.LockDoor(obj41) + ns.LockDoor(obj42) + ns.LockDoor(obj43) + ns.LockDoor(obj44) + ns.LockDoor(obj45) + ns.LockDoor(obj46) + ns.LockDoor(obj47) + ns.UnBlind() +} +func OnEvent(typ string) { + switch typ { + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war09d/dummy_test.go b/examples/war09d/dummy_test.go new file mode 100644 index 0000000..a6056b2 --- /dev/null +++ b/examples/war09d/dummy_test.go @@ -0,0 +1,6 @@ +package war09d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war09d/war09d.go b/examples/war09d/war09d.go new file mode 100644 index 0000000..8580b08 --- /dev/null +++ b/examples/war09d/war09d.go @@ -0,0 +1,854 @@ +package war09d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + gvar21 ns.ObjectGroupID + gvar22 ns.ObjectGroupID + gvar23 ns.ObjectGroupID + gvar24 ns.ObjectGroupID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.WallGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 [5]ns.WaypointID + wp42 [5]ns.WaypointID + wp43 ns.WaypointID + gvar44 ns.WaypointGroupID + gvar45 int + gvar46 int + gvar47 int + gvar48 int + gvar49 int + obj50 ns.ObjectID + obj51 ns.ObjectID + ivar52 int + gvar53 int + gvar54 int + fvar55 float32 + fvar56 float32 + flag57 bool + flag58 bool + flag59 bool + flag60 bool + flag61 bool + flag62 bool + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + flag68 bool + flag69 bool + flag70 bool + flag71 bool + flag72 bool + flag73 bool +) + +func init() { + gvar45 = 0 + gvar46 = 1 + gvar47 = 2 + gvar48 = 3 + gvar49 = 4 + ivar52 = 1000 + gvar53 = gvar45 + gvar54 = gvar48 + flag57 = false + flag58 = false + flag59 = false + flag60 = false + flag61 = false + flag62 = false + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + flag68 = false + flag69 = false + flag70 = false + flag71 = false + flag72 = false + flag73 = false +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func MapInitialize() { + obj4 = ns.Object("LoneWolf01") + obj5 = ns.Object("Skel01a") + obj6 = ns.Object("Skel02a") + obj7 = ns.Object("Skel03a") + obj8 = ns.Object("SquadLeader") + obj9 = ns.Object("Cain") + obj10 = ns.Object("Cain2") + obj11 = ns.Object("CainWolf01") + obj12 = ns.Object("CainWolf02") + obj13 = ns.Object("CainWolf03") + obj14 = ns.Object("Necromancer1") + obj15 = ns.Object("Necromancer2") + obj16 = ns.Object("Necromancer") + obj17 = ns.Object("NecroStart") + obj18 = ns.Object("Lich") + obj19 = ns.Object("KeepOutTrigger") + obj20 = ns.Object("TreasureLight") + gvar21 = ns.ObjectGroup("GoldTrapSpikes") + gvar22 = ns.ObjectGroup("WolfCaveTriggers") + gvar23 = ns.ObjectGroup("SkeletonSquad") + gvar25 = ns.ObjectGroup("NecroTriggers") + gvar24 = ns.ObjectGroup("ElevatorGroup1") + gvar26 = ns.ObjectGroup("SkeletonMarchTriggers") + gvar27 = ns.WallGroup("SecretHallWalls01") + gvar28 = ns.WallGroup("NecroWalls") + gvar29 = ns.WallGroup("NecroSafetyWalls") + wp30 = ns.Waypoint("NecroWP") + wp31 = ns.Waypoint("GoldTrapWP1") + wp32 = ns.Waypoint("GoldTrapWP2") + wp33 = ns.Waypoint("GoldTrapWP3") + wp34 = ns.Waypoint("GoldTrapWP4") + wp37 = ns.Waypoint("WolfCreateWP01") + wp38 = ns.Waypoint("WolfCreateWP02") + wp39 = ns.Waypoint("LoneWolf01DestWP") + wp40 = ns.Waypoint("Wolf01FacingWP") + wp35 = ns.Waypoint("WolfCreate01Dest") + wp36 = ns.Waypoint("WolfCreate02Dest") + wp41[0] = ns.Waypoint("TeleWP0") + wp41[1] = ns.Waypoint("TeleWP1") + wp41[2] = ns.Waypoint("TeleWP2") + wp41[3] = ns.Waypoint("TeleWP3") + wp41[4] = ns.Waypoint("TeleWP4") + wp42[0] = ns.Waypoint("WallSmokeWP0") + wp42[1] = ns.Waypoint("WallSmokeWP1") + wp42[2] = ns.Waypoint("WallSmokeWP2") + wp42[3] = ns.Waypoint("WallSmokeWP3") + wp42[4] = ns.Waypoint("WallSmokeWP4") + wp43 = ns.Waypoint("PlayerSounds") + gvar44 = ns.WaypointGroup("SearchNetwork1") + ns.StoryPic(obj9, "WoundedConjurerPic") + ns.StoryPic(obj10, "WoundedConjurerPic") + ns.StoryPic(obj16, "NecromancerPic") + ns.UnBlind() +} +func PlaySwamp() { + ns.Music(25, 100) +} +func PlayAction() { + ns.Music(26, 100) +} +func PlayAction2() { + ns.Music(28, 100) +} +func PlayMordwyn() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(21, 100) +LABEL1: + return +} +func PlayOgre() { + ns.Music(7, 100) +} +func PlayCaves() { + ns.Music(18, 100) +} +func PlayWasteland() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(19, 100) +LABEL1: + return +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func DisableGoldTrapSpikes() { + ns.ObjectGroupOff(gvar21) +} +func TriggerGoldTrapPoison() { + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp33), ns.GetWaypointY(wp33), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp34), ns.GetWaypointY(wp34), 0, 0) +} +func TriggerGoldTrap() { + ns.ObjectGroupOn(gvar21) + ns.FrameTimer(20, TriggerGoldTrapPoison) +} +func ToggleElevatorGroup1() { + ns.ObjectGroupToggle(gvar24) +} +func DisableTL() { + ns.ObjectOff(obj20) +} +func WolfOrders() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + ) + v0 = ns.GetWaypointX(wp35) + v1 = ns.GetWaypointY(wp35) + v2 = ns.GetWaypointX(wp36) + v3 = ns.GetWaypointY(wp36) + v4 = ns.GetWaypointX(wp39) + v5 = ns.GetWaypointY(wp39) + ns.CreatureGuard(obj50, v0, v1, v4, v5, 350) + ns.CreatureGuard(obj51, v2, v3, v4, v5, 350) + ns.AggressionLevel(obj50, 0.83) + ns.AggressionLevel(obj51, 0.83) +} +func CainDialogStart() { + var v0 int + v0 = gvar53 + if v0 == gvar45 { + goto LABEL1 + } + if v0 == gvar46 { + goto LABEL2 + } + if v0 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainAsk") + flag57 = true + goto LABEL4 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainHealed") + flag57 = true + goto LABEL4 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainEscort") + flag57 = true + goto LABEL4 +LABEL4: + return +} +func CainDialogEnd() { + var ( + v0 int + v1 ns.ObjectID + v2 int + ) + v2 = gvar53 + if v2 == gvar45 { + goto LABEL1 + } + if v2 == gvar46 { + goto LABEL2 + } + if v2 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.GetAnswer(obj9) + if v0 != 1 { + goto LABEL5 + } + v1 = ns.GetLastItem(ns.GetHost()) + for { + if v1 == 0 { + goto LABEL6 + } + if !(ns.HasClass(v1, ns.FOOD) && ns.HasSubclass(v1, ns.HEALTH_POTION)) { + goto LABEL7 + } + ns.Drop(ns.GetHost(), v1) + ns.Delete(v1) + fvar55 = ns.GetObjectX(obj9) + fvar56 = ns.GetObjectY(obj9) + CainRescue() + return + LABEL7: + v1 = ns.GetPreviousItem(v1) + } +LABEL6: + ns.PrintToAll("War09c:CainNoPotion") + goto LABEL9 +LABEL5: + ns.FrameTimer(1, CainPlea2) +LABEL9: + goto LABEL4 +LABEL2: + ns.CreatureFollow(obj10, ns.GetHost()) + ns.BecomePet(obj10) + ns.PrintToAll("War09c:SavedCain") + ns.GiveXp(ns.GetHost(), 2500) + ns.CancelDialog(obj10) + flag61 = true + gvar53 = gvar47 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func LichFight() { + ns.ObjectOn(obj18) + ns.Enchant(obj18, ns.ENCHANT_INVISIBLE, 3) + ns.MoveObject(obj18, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3])) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3]), 0, 0) +} +func NecroTalk() { + if !ns.IsCaller(obj16) { + goto LABEL1 + } + ns.ObjectOff(obj17) + ns.SetDialog(obj16, ns.NORMAL, NecroDialogStart, NecroDialogEnd) + ns.StartDialog(obj16, ns.GetHost()) +LABEL1: + return +} +func MoveBody() { + ns.Delete(obj9) + ns.MoveObject(obj10, fvar55, fvar56) +} +func StartNecroFight2() { + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.Walk(obj16, ns.GetWaypointX(wp30), ns.GetWaypointY(wp30)) +} +func WolfHarass2() { + var ( + v0 int + v1 int + v2 int + ) + v0 = ns.Random(40, 65) + v1 = ns.Random(0, 2) + if ns.IsObjectOn(obj11) { + goto LABEL1 + } + ns.ObjectOn(obj11) + ns.ObjectOn(obj12) + ns.ObjectOn(obj13) +LABEL1: + v2 = v1 + if v2 == 0 { + goto LABEL2 + } + if v2 == 1 { + goto LABEL3 + } + if v2 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + if !(flag58 == false && flag63 == false) { + goto LABEL6 + } + ns.HitLocation(obj11, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL7 +LABEL6: + v0 = 2 +LABEL7: + goto LABEL5 +LABEL3: + if !(flag59 == false && flag64 == false) { + goto LABEL8 + } + ns.HitLocation(obj12, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL9 +LABEL8: + v0 = 2 +LABEL9: + goto LABEL5 +LABEL4: + if !(flag60 == false && flag65 == false) { + goto LABEL10 + } + ns.HitLocation(obj13, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL11 +LABEL10: + v0 = 2 +LABEL11: + goto LABEL5 +LABEL5: + if !(flag63 == false || flag64 == false || flag65 == false) { + goto LABEL12 + } + ns.FrameTimer(v0, WolfHarass2) + goto LABEL13 +LABEL12: + return +LABEL13: + return +} +func CainPlea2() { + ns.Chat(obj9, "War09c:CainPlea2") +} +func MapEntry() { + ns.NoWallSound(false) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func KeepOut2() { + if flag69 { + goto LABEL1 + } + if !ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func Secret01Declare() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 75) +} +func Secret02Declare() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +} +func SkeletonMarch() { + ns.ObjectGroupOff(gvar26) + ns.ObjectGroupOn(gvar23) + ns.Wander(obj5) + ns.Wander(obj6) + ns.Wander(obj7) + ns.Wander(obj8) +} +func LoneWolf01Retreat() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp39) + v1 = ns.GetWaypointY(wp39) + v2 = ns.GetWaypointX(wp40) + v3 = ns.GetWaypointY(wp40) + ns.RetreatLevel(obj4, 0) + ns.CreatureGuard(obj4, v0, v1, v2, v3, 150) +} +func WolfAmbush() { + ns.ObjectGroupOff(gvar22) + obj50 = ns.CreateObject("BlackWolf", wp37) + obj51 = ns.CreateObject("BlackWolf", wp38) + ns.FrameTimer(1, WolfOrders) +} +func HomePatrol() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.GoBackHome(ns.GetTrigger()) + ns.PauseObject(ns.GetTrigger(), 120) + ns.Wander(ns.GetTrigger()) +} +func WolfGone() { + if !ns.IsTrigger(obj11) { + goto LABEL1 + } + flag58 = true + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL1 + } + ns.AggressionLevel(obj11, 0.5) +LABEL1: + if !ns.IsTrigger(obj12) { + goto LABEL2 + } + flag59 = true + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL2 + } + ns.AggressionLevel(obj12, 0.5) +LABEL2: + if !ns.IsTrigger(obj13) { + goto LABEL3 + } + flag60 = true + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL3 + } + ns.AggressionLevel(obj13, 0.5) +LABEL3: + if !(flag58 == true && flag59 == true && flag60 == true) { + goto LABEL4 + } + ns.DestroyChat(obj9) + flag57 = true + gvar54 = gvar49 + ns.SetDialog(obj9, ns.YESNO, CainDialogStart, CainDialogEnd) +LABEL4: + return +} +func CainPlea() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ns.CurrentHealth(obj9) > 0) { + goto LABEL1 + } + v0 = gvar54 + if v0 == gvar48 { + goto LABEL2 + } + if v0 == gvar49 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.Chat(obj9, "War09c:CainPlea") + goto LABEL1 +LABEL3: + ns.Chat(obj9, "War09c:CainPlea2") + goto LABEL1 +LABEL1: + return +} +func WolfHarass() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !(r1 && flag61 == false) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + if !(flag61 == false && flag62 == false) { + goto LABEL2 + } + WolfHarass2() +LABEL2: + return +} +func WolvesTargetPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if flag58 { + goto LABEL2 + } + flag63 = true + ns.AggressionLevel(obj11, 0.5) + ns.Attack(obj11, ns.GetHost()) +LABEL2: + if flag59 { + goto LABEL3 + } + flag64 = true + ns.AggressionLevel(obj12, 0.5) + ns.Attack(obj12, ns.GetHost()) +LABEL3: + if flag60 { + goto LABEL1 + } + flag65 = true + ns.AggressionLevel(obj13, 0.5) + ns.Attack(obj13, ns.GetHost()) +LABEL1: + return +} +func CainDie() { + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL1 + } + ns.AggressionLevel(obj11, 0.83) +LABEL1: + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL2 + } + ns.AggressionLevel(obj12, 0.83) +LABEL2: + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL3 + } + ns.AggressionLevel(obj13, 0.83) +LABEL3: + fvar55 = ns.GetObjectX(obj9) + fvar56 = ns.GetObjectY(obj9) + flag62 = true + ns.ObjectOn(obj10) + ns.Damage(obj10, 0, 200000, 0) + ns.FrameTimer(1, MoveBody) +} +func CainRescue() { + ns.Delete(obj9) + ns.MoveObject(obj10, fvar55, fvar56) + ns.ObjectOn(obj10) + ns.CreatureGuard(obj10, fvar55, fvar56, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + gvar53 = gvar46 + ns.SetDialog(obj10, ns.NORMAL, CainDialogStart, CainDialogEnd) + ns.LookAtObject(obj10, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj10) + ns.StartDialog(obj10, ns.GetHost()) +} +func NecroDialogStart() { + var ( + v0 int + v1 int + ) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj16, ns.GetHost()) + ns.LookAtObject(obj15, ns.GetHost()) + ns.LookAtObject(obj14, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj16) + ns.TellStory(ns.SwordsmanHurt, "Con09a:NecroThreat1") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj16, ns.GetHost()) + ns.LookAtObject(obj15, ns.GetHost()) + ns.LookAtObject(obj14, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj16) + ns.TellStory(ns.SwordsmanHurt, "Con09a:NecroThreat4") + goto LABEL3 +LABEL3: + return +} +func NecroDialogEnd() { + ns.CancelDialog(obj16) + ns.AggressionLevel(obj14, 0.83) + ns.AggressionLevel(obj15, 0.83) + ns.AggressionLevel(obj16, 0.83) + ns.CreatureIdle(obj14) + ns.CreatureIdle(obj15) + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.FrameTimer(ivar52, LichFight) +} +func StartNecroFight() { + var v0 int + ns.WayPointGroupOff(gvar44) + ns.ObjectOff(obj19) + ns.ObjectGroupOff(gvar25) + ns.ObjectOn(obj17) + ns.ObjectOn(obj14) + ns.ObjectOn(obj15) + ns.ObjectOn(obj16) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar29) + ns.NoWallSound(false) + ns.MusicPushEvent() + PlayAction2() + ns.WallGroupClose(gvar28) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp42[v0]), ns.GetWaypointY(wp42[v0]), 0, 0) + v0 += 1 + } +LABEL1: + ns.FrameTimer(1, StartNecroFight2) +} +func NecroTeleport() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp41[v2]) + v1 = ns.GetWaypointY(wp41[v2]) + if !(ns.IsCaller(obj14) || ns.IsCaller(obj15) || ns.IsCaller(obj16) || ns.IsCaller(obj18)) { + goto LABEL1 + } + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(ns.GetCaller(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +LABEL1: + return +} +func NecroTeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp41[v2]) + v1 = ns.GetWaypointY(wp41[v2]) + if !(ns.IsTrigger(obj14) || ns.IsTrigger(obj15) || ns.IsTrigger(obj16)) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 15) +LABEL1: + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func OpenMagicWalls() { + var v0 int + if !ns.IsTrigger(obj14) { + goto LABEL1 + } + flag66 = true +LABEL1: + if !ns.IsTrigger(obj15) { + goto LABEL2 + } + flag67 = true +LABEL2: + if !ns.IsTrigger(obj16) { + goto LABEL3 + } + flag68 = true +LABEL3: + if !ns.IsTrigger(obj18) { + goto LABEL4 + } + flag69 = true +LABEL4: + if !(flag66 == true && flag67 == true && flag68 == true && flag69 == true) { + goto LABEL5 + } + ns.WallGroupOpen(gvar28) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL6 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp42[v0]), ns.GetWaypointY(wp42[v0]), 0, 0) + v0 += 1 + } +LABEL6: + ns.WayPointGroupOn(gvar44) + ns.MusicPopEvent() +LABEL5: + return +} +func TeleportToPlayer() { + var ( + v0 int + v1 float32 + v2 float32 + v3 ns.WaypointID + ) + v2 = 1e+06 + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + v1 = ns.Distance(ns.GetWaypointX(wp41[v0]), ns.GetWaypointY(wp41[v0]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v1 < v2) { + goto LABEL2 + } + v2 = v1 + v3 = wp41[v0] + LABEL2: + v0 += 1 + } +LABEL1: + ns.Enchant(obj18, ns.ENCHANT_INVISIBLE, 1) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(obj18), ns.GetObjectY(obj18), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj18), ns.GetObjectY(obj18), 0, 0) + ns.MoveObject(obj18, ns.GetWaypointX(v3), ns.GetWaypointY(v3)) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(v3), ns.GetWaypointY(v3), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(v3), ns.GetWaypointY(v3), 0, 0) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/war10a/dummy_test.go b/examples/war10a/dummy_test.go new file mode 100644 index 0000000..a742458 --- /dev/null +++ b/examples/war10a/dummy_test.go @@ -0,0 +1,6 @@ +package war10a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war10a/war10a.go b/examples/war10a/war10a.go new file mode 100644 index 0000000..e9cdda6 --- /dev/null +++ b/examples/war10a/war10a.go @@ -0,0 +1,820 @@ +package war10a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + wp59 ns.WaypointID + wp60 ns.WaypointID + gvar61 ns.WallGroupID + gvar62 ns.WallGroupID + gvar63 ns.WallGroupID + gvar64 ns.ObjectGroupID + gvar65 ns.ObjectGroupID + gvar66 ns.ObjectGroupID + gvar67 ns.ObjectGroupID + gvar68 ns.ObjectGroupID + gvar69 ns.ObjectGroupID + gvar70 ns.ObjectGroupID + flag71 bool + flag72 bool + flag73 bool + flag74 bool + gvar75 ns.WallGroupID + gvar76 ns.WallGroupID + gvar77 ns.WallGroupID + gvar78 ns.ObjectGroupID + obj79 ns.ObjectID + obj80 ns.ObjectID + gvar81 ns.WallGroupID + flag82 bool + flag83 bool + wp84 ns.WaypointID + wp85 ns.WaypointID + obj86 ns.ObjectID + obj87 ns.ObjectID + wp88 ns.WaypointID + wp89 ns.WaypointID + obj90 ns.ObjectID + gvar91 ns.WallGroupID + gvar92 ns.WallGroupID + gvar93 ns.ObjectGroupID + gvar94 ns.ObjectGroupID + gvar95 ns.ObjectGroupID + gvar96 ns.ObjectGroupID + gvar97 ns.ObjectGroupID + gvar98 ns.ObjectGroupID + wp99 ns.WaypointID + wp100 ns.WaypointID + wp101 ns.WaypointID + wp102 ns.WaypointID + wp103 ns.WaypointID + wp104 ns.WaypointID + obj105 ns.ObjectID + obj106 ns.ObjectID + wp107 ns.WaypointID + gvar108 ns.ObjectGroupID + obj109 ns.ObjectID + obj110 ns.ObjectID + gvar111 int + wp112 ns.WaypointID + wp113 ns.WaypointID + gvar114 ns.WallGroupID + gvar115 ns.WallGroupID + gvar116 ns.ObjectGroupID + gvar117 ns.WallGroupID + gvar118 ns.WallGroupID + wp119 ns.WaypointID + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + wp123 ns.WaypointID + wp124 ns.WaypointID + fvar125 float32 + fvar126 float32 + flag127 bool + flag128 bool +) + +func init() { + flag71 = false + flag72 = false + flag73 = false + flag74 = false + flag83 = false + flag82 = false + flag127 = false + flag128 = false +} +func DisableArrow01() { + ns.ObjectOff(obj4) +} +func EnableArrow01() { + ns.ObjectOn(obj4) + ns.FrameTimer(1, DisableArrow01) +} +func DisableArrow02() { + ns.ObjectOff(obj5) +} +func EnableArrow02() { + ns.ObjectOn(obj5) + ns.FrameTimer(1, DisableArrow02) +} +func DisableArrow03() { + ns.ObjectOff(obj6) +} +func EnableArrow03() { + ns.ObjectOn(obj6) + ns.FrameTimer(1, DisableArrow03) +} +func DisableArrow04() { + ns.ObjectOff(obj7) +} +func EnableArrow04() { + ns.ObjectOn(obj7) + ns.FrameTimer(1, DisableArrow04) +} +func DisableArrow05() { + ns.ObjectOff(obj8) +} +func EnableArrow05() { + ns.ObjectOn(obj8) + ns.FrameTimer(1, DisableArrow05) +} +func DisableArrow06() { + ns.ObjectOff(obj9) +} +func EnableArrow06() { + ns.ObjectOn(obj9) + ns.FrameTimer(1, DisableArrow06) +} +func DisableArrow07() { + ns.ObjectOff(obj10) +} +func EnableArrow07() { + ns.ObjectOn(obj10) + ns.FrameTimer(1, DisableArrow07) +} +func DisableArrow08() { + ns.ObjectOff(obj11) +} +func EnableArrow08() { + ns.ObjectOn(obj11) + ns.FrameTimer(1, DisableArrow08) +} +func DisableArrow09() { + ns.ObjectOff(obj12) +} +func EnableArrow09() { + ns.ObjectOn(obj12) + ns.FrameTimer(1, DisableArrow09) +} +func DisableArrow10() { + ns.ObjectOff(obj13) +} +func EnableArrow10() { + ns.ObjectOn(obj13) + ns.FrameTimer(1, DisableArrow10) +} +func DisableArrow11() { + ns.ObjectOff(obj14) +} +func EnableArrow11() { + ns.ObjectOn(obj14) + ns.FrameTimer(1, DisableArrow11) +} +func DisableArrow12() { + ns.ObjectOff(obj15) +} +func EnableArrow12() { + ns.ObjectOn(obj15) + ns.FrameTimer(1, DisableArrow12) +} +func DisableArrow13() { + ns.ObjectOff(obj16) +} +func EnableArrow13() { + ns.ObjectOn(obj16) + ns.FrameTimer(1, DisableArrow13) +} +func DisableArrow14() { + ns.ObjectOff(obj17) +} +func EnableArrow14() { + ns.ObjectOn(obj17) + ns.FrameTimer(1, DisableArrow14) +} +func DisableArrow15() { + ns.ObjectOff(obj18) +} +func EnableArrow15() { + ns.ObjectOn(obj18) + ns.FrameTimer(1, DisableArrow15) +} +func DisableArrow25() { + ns.ObjectOff(obj28) +} +func EnableArrow25() { + ns.ObjectOn(obj28) + ns.FrameTimer(1, DisableArrow25) +} +func DisableArrow26() { + ns.ObjectOff(obj29) +} +func EnableArrow26() { + ns.ObjectOn(obj29) + ns.FrameTimer(1, DisableArrow26) +} +func DisableArrow27() { + ns.ObjectOff(obj30) +} +func EnableArrow27() { + ns.ObjectOn(obj30) + ns.FrameTimer(1, DisableArrow27) +} +func DisableArrow28() { + ns.ObjectOff(obj31) +} +func EnableArrow28() { + ns.ObjectOn(obj31) + ns.FrameTimer(1, DisableArrow28) +} +func DisableArrow29() { + ns.ObjectOff(obj32) +} +func EnableArrow29() { + ns.ObjectOn(obj32) + ns.FrameTimer(1, DisableArrow29) +} +func DisableArrow30() { + ns.ObjectOff(obj33) +} +func EnableArrow30() { + ns.ObjectOn(obj33) + ns.FrameTimer(1, DisableArrow30) +} +func DisableArrow31() { + ns.ObjectOff(obj34) +} +func EnableArrow31() { + ns.ObjectOn(obj34) + ns.FrameTimer(1, DisableArrow31) +} +func DisableArrow32() { + ns.ObjectOff(obj35) +} +func EnableArrow32() { + ns.ObjectOn(obj35) + ns.FrameTimer(1, DisableArrow32) +} +func DisableArrow33() { + ns.ObjectOff(obj36) +} +func EnableArrow33() { + ns.ObjectOn(obj36) + ns.FrameTimer(1, DisableArrow33) +} +func DisableArrow34() { + ns.ObjectOff(obj37) +} +func EnableArrow34() { + ns.ObjectOn(obj37) + ns.FrameTimer(1, DisableArrow34) +} +func DisableArrow35() { + ns.ObjectOff(obj38) +} +func EnableArrow35() { + ns.ObjectOn(obj38) + ns.FrameTimer(1, DisableArrow35) +} +func DisableArrow36() { + ns.ObjectOff(obj39) +} +func EnableArrow36() { + ns.ObjectOn(obj39) + ns.FrameTimer(1, DisableArrow36) +} +func DisableArrow37() { + ns.ObjectOff(obj40) +} +func EnableArrow37() { + ns.ObjectOn(obj40) + ns.FrameTimer(1, DisableArrow37) +} +func DisableArrow38() { + ns.ObjectOff(obj41) +} +func EnableArrow38() { + ns.ObjectOn(obj41) + ns.FrameTimer(1, DisableArrow38) +} +func DisableArrowGroup1() { + ns.ObjectOff(obj19) + ns.ObjectOff(obj20) + ns.ObjectOff(obj21) + ns.ObjectOff(obj22) +} +func EnableArrowGroup1() { + ns.ObjectOn(obj19) + ns.ObjectOn(obj20) + ns.ObjectOn(obj21) + ns.ObjectOn(obj22) + ns.FrameTimer(2, DisableArrowGroup1) +} +func DisableArrowGroup2() { + ns.ObjectOff(obj24) + ns.ObjectOff(obj25) + ns.ObjectOff(obj26) + ns.ObjectOff(obj27) +} +func EnableArrowGroup2() { + ns.ObjectOn(obj24) + ns.ObjectOn(obj25) + ns.ObjectOn(obj26) + ns.ObjectOn(obj27) + ns.FrameTimer(2, DisableArrowGroup2) +} +func Blocks2MoveBack() { + ns.Move(obj45, wp54) + ns.Move(obj46, wp55) + ns.Move(obj47, wp56) + ns.AudioEvent(ns.SpikeBlockMove, wp51) +} +func Blocks2Move() { + ns.ObjectGroupOff(gvar70) + ns.Move(obj45, wp51) + ns.Move(obj46, wp52) + ns.Move(obj47, wp53) + ns.AudioEvent(ns.SpikeBlockMove, wp54) +} +func OpenBlockWallGroup1() { + ns.WallGroupOpen(gvar61) +} +func OpenBlockWallGroup2() { + ns.WallGroupOpen(gvar62) +} +func OpenBlockWallGroup3() { + ns.WallGroupOpen(gvar63) +} +func FilterBlock5() int { + if !ns.IsCaller(obj46) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func UnlockSpikeDoor() { + ns.UnlockDoor(obj79) +} +func LockSpikeDoor() { + ns.LockDoor(obj79) +} +func SkelGroup1Hostilize() { + ns.GroupAggressionLevel(gvar64, 0.83) +} +func SkelGroup2Hostilize() { + ns.GroupAggressionLevel(gvar65, 0.83) +} +func SkelGroup3Hostilize() { + ns.GroupAggressionLevel(gvar66, 0.83) +} +func SkelGroup4Hostilize() { + ns.GroupAggressionLevel(gvar67, 0.83) +} +func SkelGroup5Hostilize() { + ns.GroupAggressionLevel(gvar68, 0.83) +} +func SkelGroup6Hostilize() { + ns.GroupAggressionLevel(gvar69, 0.83) +} +func OpenSecretWallGroup1() { + ns.WallGroupOpen(gvar75) +} +func OpenSecretWallGroup2() { + ns.WallGroupOpen(gvar76) +} +func OpenSecretWallGroup3() { + ns.WallGroupOpen(gvar77) +} +func Blocks1Move() { + ns.Move(obj42, wp48) + ns.Move(obj43, wp49) + ns.Move(obj44, wp50) + ns.AudioEvent(ns.SpikeBlockMove, wp57) + ns.AudioEvent(ns.SpikeBlockMove, wp59) + ns.AudioEvent(ns.SpikeBlockMove, wp60) +} +func Lever1Check() { + ns.WallGroupOpen(gvar62) + if flag71 { + goto LABEL1 + } + flag71 = true + ns.AudioEvent(ns.Gear3, wp60) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag71 == true && flag72 == true) { + goto LABEL2 + } + Blocks1Move() +LABEL2: + return +} +func Lever2Check() { + ns.WallGroupOpen(gvar61) + if flag72 { + goto LABEL1 + } + flag72 = true + ns.AudioEvent(ns.Gear3, wp59) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag71 == true && flag72 == true) { + goto LABEL2 + } + Blocks1Move() +LABEL2: + return +} +func Lever3Check() { + if flag73 { + goto LABEL1 + } + flag73 = true + ns.AudioEvent(ns.Gear3, wp58) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag73 == true && flag74 == true) { + goto LABEL2 + } + OpenSecretWallGroup3() + ns.ObjectOn(obj80) +LABEL2: + return +} +func Lever4Check() { + if flag74 { + goto LABEL1 + } + flag74 = true + ns.AudioEvent(ns.Gear3, wp58) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag73 == true && flag74 == true) { + goto LABEL2 + } + OpenSecretWallGroup3() + ns.ObjectOn(obj80) +LABEL2: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OpenExitWallGroup() { + ns.WallGroupOpen(gvar81) +} +func PuzzleCheck() { + if !(flag82 && flag83) { + goto LABEL1 + } + OpenExitWallGroup() +LABEL1: + return +} +func LeftPuzzleActivation() { + flag83 = true + ns.AudioEvent(ns.CreatureCageAppears, wp85) + PuzzleCheck() +} +func RightPuzzleActivation() { + flag82 = true + ns.AudioEvent(ns.CreatureCageAppears, wp84) + PuzzleCheck() +} +func LeftPuzzleRelease() { + flag83 = false + PuzzleCheck() +} +func RightPuzzleRelease() { + flag82 = false + PuzzleCheck() +} +func OrbLightOff() { + ns.ObjectOff(obj86) + ns.MoveObject(obj87, ns.GetWaypointX(wp88), ns.GetWaypointY(wp88)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj86, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj87, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp89, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj86) + ns.AudioEvent(ns.BallBounce, wp89) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func MissionStart() { + ns.StartupScreen(10) + ns.JournalEntry(ns.GetHost(), "War10aOrbQuest", 2) + ns.FrameTimer(10, PlaySubMusic) +} +func InitializeVampireKnights() { + obj120 = ns.Object("VampireKnight1") + obj121 = ns.Object("VKBat1") + wp123 = ns.Waypoint("VampireKnight1WP") + wp124 = ns.Waypoint("BatCreate") +} +func OpenVampire1WallGroup() { + ns.WallGroupOpen(gvar114) +} +func MapInitialize() { + obj90 = ns.Object("MissionTrig") + gvar118 = ns.WallGroup("GoldKeyWallGroup") + wp119 = ns.Waypoint("GoldKeyExitWP") + gvar93 = ns.ObjectGroup("PitAmbushGroup") + gvar91 = ns.WallGroup("SkelPitWallGroup") + gvar92 = ns.WallGroup("ElevatorWallGroup") + gvar94 = ns.ObjectGroup("PitSpikesGroup1") + gvar95 = ns.ObjectGroup("PitSpikesGroup2") + gvar96 = ns.ObjectGroup("PitSpikesGroup3") + gvar97 = ns.ObjectGroup("PitSpikesGroup4") + gvar98 = ns.ObjectGroup("PitSpikesGroup5") + wp99 = ns.Waypoint("Spikes1AudioWP") + wp100 = ns.Waypoint("Spikes2AudioWP") + wp101 = ns.Waypoint("Spikes3AudioWP") + wp102 = ns.Waypoint("Spikes4AudioWP") + wp103 = ns.Waypoint("Spikes5AudioWP") + wp104 = ns.Waypoint("Secret1AudioWP") + obj4 = ns.Object("Arrow01") + obj5 = ns.Object("Arrow02") + obj6 = ns.Object("Arrow03") + obj7 = ns.Object("Arrow04") + obj8 = ns.Object("Arrow05") + obj9 = ns.Object("Arrow06") + obj10 = ns.Object("Arrow07") + obj11 = ns.Object("Arrow08") + obj12 = ns.Object("Arrow09") + obj13 = ns.Object("Arrow10") + obj14 = ns.Object("Arrow11") + obj15 = ns.Object("Arrow12") + obj16 = ns.Object("Arrow13") + obj17 = ns.Object("Arrow14") + obj18 = ns.Object("Arrow15") + obj19 = ns.Object("Arrow16") + obj20 = ns.Object("Arrow17") + obj21 = ns.Object("Arrow18") + obj22 = ns.Object("Arrow19") + obj23 = ns.Object("Arrow20") + obj24 = ns.Object("Arrow21") + obj25 = ns.Object("Arrow22") + obj26 = ns.Object("Arrow23") + obj27 = ns.Object("Arrow24") + obj28 = ns.Object("Arrow25") + obj29 = ns.Object("Arrow26") + obj30 = ns.Object("Arrow27") + obj31 = ns.Object("Arrow28") + obj32 = ns.Object("Arrow29") + obj33 = ns.Object("Arrow30") + obj34 = ns.Object("Arrow31") + obj35 = ns.Object("Arrow32") + obj36 = ns.Object("Arrow33") + obj37 = ns.Object("Arrow34") + obj38 = ns.Object("Arrow35") + obj39 = ns.Object("Arrow36") + obj40 = ns.Object("Arrow37") + obj41 = ns.Object("Arrow38") + obj42 = ns.Object("Block1") + obj43 = ns.Object("Block2") + obj44 = ns.Object("Block3") + obj45 = ns.Object("Block4") + obj46 = ns.Object("Block5") + obj47 = ns.Object("Block6") + wp48 = ns.Waypoint("Block1WP") + wp49 = ns.Waypoint("Block2WP") + wp50 = ns.Waypoint("Block3WP") + wp51 = ns.Waypoint("Block4WP") + wp52 = ns.Waypoint("Block5WP") + wp53 = ns.Waypoint("Block6WP") + wp54 = ns.Waypoint("Block4WPb") + wp55 = ns.Waypoint("Block5WPb") + wp56 = ns.Waypoint("Block6WPb") + wp57 = ns.Waypoint("BlockAudioWP") + wp58 = ns.Waypoint("BlockAudio2WP") + wp59 = ns.Waypoint("BlockAudio3WP") + wp60 = ns.Waypoint("BlockAudio4WP") + obj105 = ns.Object("Blocks2Trigger") + gvar61 = ns.WallGroup("BlockWallGroup1") + gvar62 = ns.WallGroup("BlockWallGroup2") + gvar63 = ns.WallGroup("BlockWallGroup3") + gvar70 = ns.ObjectGroup("SkelBlockTrigGroup") + gvar78 = ns.ObjectGroup("SpikeGroup1") + obj79 = ns.Object("SpikeDoor") + ns.LockDoor(obj79) + obj106 = ns.Object("StoneBlock1") + gvar75 = ns.WallGroup("SecretWallGroup1") + gvar76 = ns.WallGroup("SecretWallGroup2") + gvar77 = ns.WallGroup("SecretWallGroup3") + wp107 = ns.Waypoint("Secret2AudioWP") + gvar108 = ns.ObjectGroup("Secret200Group") + gvar64 = ns.ObjectGroup("SkelGroup1") + gvar65 = ns.ObjectGroup("SkelGroup2") + gvar66 = ns.ObjectGroup("SkelGroup3") + gvar67 = ns.ObjectGroup("SkelGroup4") + gvar68 = ns.ObjectGroup("SkelGroup5") + gvar69 = ns.ObjectGroup("SkelGroup6") + obj109 = ns.Object("VampireKnight1") + obj110 = ns.Object("VKbat1") + wp112 = ns.Waypoint("VampireKnight1WP ") + wp113 = ns.Waypoint("BatCreate") + gvar114 = ns.WallGroup("Vampire1WallGroup") + gvar115 = ns.WallGroup("Vampire1WallGroup2") + gvar116 = ns.ObjectGroup("Vampire1TrigGroup") + gvar117 = ns.WallGroup("CherubWallGroup") + OpenVampire1WallGroup() + gvar81 = ns.WallGroup("ExitWallGroup") + obj86 = ns.Object("OrbLight") + wp89 = ns.Waypoint("OrbSoundWP") + obj87 = ns.Object("OrbEffect") + wp88 = ns.Waypoint("OrbEffectWP") + wp84 = ns.Waypoint("RightPuzzleWP") + wp85 = ns.Waypoint("LeftPuzzleWP") + obj80 = ns.Object("Necro1") + MissionStart() + InitializeVampireKnights() +} +func OpenGoldKeyWallGroup() { + ns.WallGroupOpen(gvar118) + ns.AudioEvent(ns.FlagDrop, wp119) +} +func OpenCherubWallGroup() { + ns.WallGroupOpen(gvar117) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp104) +} +func Secret200XP() { + ns.GiveXp(ns.GetHost(), 200) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp107) + ns.ObjectGroupOff(gvar108) +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func ToggleSpikes1() { + ns.ObjectGroupToggle(gvar94) + ns.AudioEvent(ns.FloorSpikesDown, wp99) +} +func ToggleSpikes2() { + ns.ObjectGroupToggle(gvar95) + ns.ObjectGroupToggle(gvar96) + ns.AudioEvent(ns.FloorSpikesDown, wp100) + ns.AudioEvent(ns.FloorSpikesDown, wp101) +} +func ToggleSpikes3() { + ns.ObjectGroupToggle(gvar97) + ns.ObjectGroupToggle(gvar98) + ns.AudioEvent(ns.FloorSpikesDown, wp102) + ns.AudioEvent(ns.FloorSpikesDown, wp103) +} +func OpenSkelPitWallGroup() { + ns.WallGroupOpen(gvar91) + ns.GroupAggressionLevel(gvar93, 0.83) +} +func OpenElevatorWallGroup() { + ns.WallGroupOpen(gvar92) +} +func BatToVampireKnight() { + ns.Effect(ns.BLUE_SPARKS, fvar125, fvar126, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar125, fvar126, 0, 0) + ns.Enchant(obj120, ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj120, fvar125, fvar126) + ns.LookAtObject(obj120, ns.GetHost()) + PlayAction3Music() +} +func SetRetreatBat() { + ns.AggressionLevel(obj122, 0.83) + ns.SetCallback(obj122, 7, BatDie) + ns.SetCallback(obj122, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj122), ns.GetObjectY(obj122), 0, 0) + ns.MoveWaypoint(wp124, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.Delete(obj122) + ns.AudioEvent(ns.BurnCast, wp124) + v0 = ns.CreateObject("Flame", wp124) + v1 = ns.CreateObject("MediumFlame", wp124) + v2 = ns.CreateObject("SmallFlame", wp124) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 83) + ns.DeleteObjectTimer(v2, 85) + ns.WallGroupOpen(gvar114) + ns.WallGroupOpen(gvar115) + PlaySubMusic() + ns.GiveXp(ns.GetHost(), 250) +} +func ChangeOnSight() { + if !flag128 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + fvar125 = ns.GetObjectX(ns.GetTrigger()) + fvar126 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj120) + ns.Damage(obj120, 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + ns.FrameTimer(1, BatToVampireKnight) +} +func VKDie() { + fvar125 = ns.GetObjectX(ns.GetTrigger()) + fvar126 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp124, fvar125, fvar126) + obj122 = ns.CreateObject("Bat", wp124) + ns.FrameTimer(1, SetRetreatBat) +} +func CloseVampire1WallGroup() { + ns.WallGroupClose(gvar114) + ns.ObjectGroupOff(gvar116) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war10b/dummy_test.go b/examples/war10b/dummy_test.go new file mode 100644 index 0000000..0a163e8 --- /dev/null +++ b/examples/war10b/dummy_test.go @@ -0,0 +1,6 @@ +package war10b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war10b/war10b.go b/examples/war10b/war10b.go new file mode 100644 index 0000000..ad45e43 --- /dev/null +++ b/examples/war10b/war10b.go @@ -0,0 +1,630 @@ +package war10b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.ObjectGroupID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + wp14 ns.WaypointID + wp15 ns.WaypointID + wp16 ns.WaypointID + wp17 ns.WaypointID + wp18 ns.WaypointID + wp19 ns.WaypointID + wp20 ns.WaypointID + wp21 ns.WaypointID + wp22 ns.WaypointID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + gvar41 int + gvar42 int + gvar43 int + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + gvar59 int + gvar60 int + gvar61 int + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID + wp69 ns.WaypointID + wp70 ns.WaypointID + gvar71 int + gvar72 int + gvar73 int + obj74 ns.ObjectID + obj75 ns.ObjectID + wp76 ns.WaypointID + wp77 ns.WaypointID + gvar78 ns.WallGroupID + gvar79 ns.ObjectGroupID + gvar80 ns.WallGroupID + gvar81 ns.WallGroupID + gvar82 ns.WallGroupID + obj83 ns.ObjectID + obj84 ns.ObjectID + gvar85 ns.ObjectGroupID + gvar86 ns.ObjectGroupID + gvar87 ns.WallGroupID + obj88 ns.ObjectID + wp89 ns.WaypointID + gvar90 ns.WallGroupID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + wp100 ns.WaypointID + wp101 ns.WaypointID + gvar102 ns.ObjectGroupID + gvar103 ns.WallGroupID + gvar104 ns.WallGroupID + gvar105 ns.WallGroupID + gvar106 ns.WallGroupID + gvar107 ns.WallGroupID + gvar108 ns.WallGroupID + obj109 ns.ObjectID + obj110 ns.ObjectID + obj111 [2]ns.ObjectID + obj112 [2]ns.ObjectID + obj113 ns.ObjectID + wp114 ns.WaypointID + wp115 ns.WaypointID + wp116 ns.WaypointID + fvar117 float32 + fvar118 float32 + flag119 bool + flag120 bool +) + +func init() { + gvar41 = 0 + gvar42 = 1 + gvar43 = gvar41 + gvar59 = 0 + gvar60 = 1 + gvar61 = gvar59 + gvar71 = 0 + gvar72 = 1 + gvar73 = gvar71 + flag119 = false + flag120 = false +} +func DisableArrow1() { + ns.ObjectOff(obj5) +} +func EnableArrow1() { + ns.ObjectOn(obj5) + ns.AudioEvent(ns.BowShoot, wp14) + ns.FrameTimer(1, DisableArrow1) +} +func DisableArrow2() { + ns.ObjectOff(obj6) +} +func EnableArrow2() { + ns.ObjectOn(obj6) + ns.AudioEvent(ns.BowShoot, wp15) + ns.FrameTimer(1, DisableArrow2) +} +func DisableArrow3() { + ns.ObjectOff(obj7) +} +func EnableArrow3() { + ns.ObjectOn(obj7) + ns.AudioEvent(ns.BowShoot, wp16) + ns.FrameTimer(1, DisableArrow3) +} +func DisableArrow4() { + ns.ObjectOff(obj8) +} +func EnableArrow4() { + ns.ObjectOn(obj8) + ns.AudioEvent(ns.BowShoot, wp17) + ns.FrameTimer(1, DisableArrow4) +} +func DisableArrow5() { + ns.ObjectOff(obj9) +} +func EnableArrow5() { + ns.ObjectOn(obj9) + ns.AudioEvent(ns.BowShoot, wp18) + ns.FrameTimer(1, DisableArrow5) +} +func DisableArrow6() { + ns.ObjectOff(obj10) +} +func EnableArrow6() { + ns.ObjectOn(obj10) + ns.AudioEvent(ns.BowShoot, wp19) + ns.FrameTimer(1, DisableArrow6) +} +func DisableArrow7() { + ns.ObjectOff(obj11) +} +func EnableArrow7() { + ns.ObjectOn(obj11) + ns.AudioEvent(ns.BowShoot, wp20) + ns.FrameTimer(1, DisableArrow7) +} +func DisableArrow8() { + ns.ObjectOff(obj12) +} +func EnableArrow8() { + ns.ObjectOn(obj12) + ns.AudioEvent(ns.BowShoot, wp21) + ns.FrameTimer(1, DisableArrow8) +} +func DisableArrow9() { + ns.ObjectOff(obj13) +} +func EnableArrow9() { + ns.ObjectOn(obj13) + ns.AudioEvent(ns.BowShoot, wp22) + ns.FrameTimer(1, DisableArrow9) +} +func DisableArrowTriggers() { + ns.ObjectGroupOff(gvar4) +} +func EnableArrowTriggers() { + ns.ObjectGroupOn(gvar4) +} +func BlockAGotoB() { + ns.Move(obj23, wp29) + ns.Move(obj24, wp30) + ns.Move(obj25, wp31) + ns.Move(obj26, wp32) + ns.Move(obj27, wp33) + ns.Move(obj28, wp34) + gvar43 = gvar42 + ns.AudioEvent(ns.SpikeBlockMove, wp30) + ns.AudioEvent(ns.BoulderMove, wp30) +} +func BlockAGotoC() { + ns.Move(obj23, wp35) + ns.Move(obj24, wp36) + ns.Move(obj25, wp37) + ns.Move(obj26, wp38) + ns.Move(obj27, wp39) + ns.Move(obj28, wp40) + gvar43 = gvar41 + ns.AudioEvent(ns.SpikeBlockMove, wp30) + ns.AudioEvent(ns.BoulderMove, wp30) +} +func BlockAGo() { + var v0 int + v0 = gvar43 + if v0 == gvar41 { + goto LABEL1 + } + if v0 == gvar42 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockAGotoB() + goto LABEL3 +LABEL2: + BlockAGotoC() + goto LABEL3 +LABEL3: + return +} +func BlockBGotoB() { + ns.Move(obj44, wp49) + ns.Move(obj45, wp50) + ns.Move(obj46, wp51) + ns.Move(obj47, wp52) + ns.Move(obj48, wp53) + gvar61 = gvar60 + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.AudioEvent(ns.BoulderMove, wp50) +} +func BlockBGotoC() { + ns.Move(obj44, wp54) + ns.Move(obj45, wp55) + ns.Move(obj46, wp56) + ns.Move(obj47, wp57) + ns.Move(obj48, wp58) + gvar61 = gvar59 + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.AudioEvent(ns.BoulderMove, wp50) +} +func BlockBGo() { + var v0 int + v0 = gvar61 + if v0 == gvar59 { + goto LABEL1 + } + if v0 == gvar60 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockBGotoB() + goto LABEL3 +LABEL2: + BlockBGotoC() + goto LABEL3 +LABEL3: + return +} +func BlockCGotoB() { + ns.Move(obj62, wp65) + ns.Move(obj63, wp66) + ns.Move(obj64, wp67) + gvar73 = gvar72 + ns.AudioEvent(ns.SpikeBlockMove, wp65) + ns.AudioEvent(ns.BoulderMove, wp65) +} +func BlockCGotoC() { + ns.Move(obj62, wp68) + ns.Move(obj63, wp69) + ns.Move(obj64, wp70) + gvar73 = gvar71 + ns.AudioEvent(ns.SpikeBlockMove, wp68) + ns.AudioEvent(ns.BoulderMove, wp68) +} +func BlockCGo() { + var v0 int + v0 = gvar73 + if v0 == gvar71 { + goto LABEL1 + } + if v0 == gvar72 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockCGotoB() + goto LABEL3 +LABEL2: + BlockCGotoC() + goto LABEL3 +LABEL3: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OrbLightOff() { + ns.ObjectOff(obj74) + ns.MoveObject(obj75, ns.GetWaypointX(wp76), ns.GetWaypointY(wp76)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj74, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj75, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp77, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj74) + ns.AudioEvent(ns.BallBounce, wp77) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func OpenBouncySecretWallGroup() { + ns.WallGroupOpen(gvar78) +} +func InitializeVampireKnights() { + obj111[0] = ns.Object("VampireKnight1") + obj112[0] = ns.Object("VKBat1") + wp114 = ns.Waypoint("VKSpot") + wp115 = ns.Waypoint("VampireKnight1WP") + wp116 = ns.Waypoint("BatCreate") +} +func MapInitialize() { + gvar80 = ns.WallGroup("ZombieAmbushWalls") + gvar79 = ns.ObjectGroup("ZombieAmbushGroup") + gvar81 = ns.WallGroup("SkeletonWallGroup") + gvar82 = ns.WallGroup("SkeletonWallGroup2") + obj83 = ns.Object("SkeletonTrigger1") + obj84 = ns.Object("SkeletonElevator") + gvar85 = ns.ObjectGroup("SkelAmbushGroup") + gvar86 = ns.ObjectGroup("SecretMechGroup") + gvar87 = ns.WallGroup("SecretMechWallGroup") + obj88 = ns.Object("SecretMechTrig") + wp89 = ns.Waypoint("Secret1AudioWP") + obj23 = ns.Object("BlockA1") + obj24 = ns.Object("BlockA2") + obj25 = ns.Object("BlockA3") + obj26 = ns.Object("BlockA4") + obj27 = ns.Object("BlockA5") + obj28 = ns.Object("BlockA6") + wp29 = ns.Waypoint("BlockWPA1b") + wp30 = ns.Waypoint("BlockWPA2b") + wp31 = ns.Waypoint("BlockWPA3b") + wp32 = ns.Waypoint("BlockWPA4b") + wp33 = ns.Waypoint("BlockWPA5b") + wp34 = ns.Waypoint("BlockWPA6b") + wp35 = ns.Waypoint("BlockWPA1c") + wp36 = ns.Waypoint("BlockWPA2c") + wp37 = ns.Waypoint("BlockWPA3c") + wp38 = ns.Waypoint("BlockWPA4c") + wp39 = ns.Waypoint("BlockWPA5c") + wp40 = ns.Waypoint("BlockWPA6c") + obj44 = ns.Object("BlockB1") + obj45 = ns.Object("BlockB2") + obj46 = ns.Object("BlockB3") + obj47 = ns.Object("BlockB4") + obj48 = ns.Object("BlockB5") + wp49 = ns.Waypoint("BlockWPB1b") + wp50 = ns.Waypoint("BlockWPB2b") + wp51 = ns.Waypoint("BlockWPB3b") + wp52 = ns.Waypoint("BlockWPB4b") + wp53 = ns.Waypoint("BlockWPB5b") + wp54 = ns.Waypoint("BlockWPB1c") + wp55 = ns.Waypoint("BlockWPB2c") + wp56 = ns.Waypoint("BlockWPB3c") + wp57 = ns.Waypoint("BlockWPB4c") + wp58 = ns.Waypoint("BlockWPB5c") + obj62 = ns.Object("BlockC1") + obj63 = ns.Object("BlockC2") + obj64 = ns.Object("BlockC3") + wp65 = ns.Waypoint("BlockWPC1b") + wp66 = ns.Waypoint("BlockWPC2b") + wp67 = ns.Waypoint("BlockWPC3b") + wp68 = ns.Waypoint("BlockWPC1c") + wp69 = ns.Waypoint("BlockWPC2c") + wp70 = ns.Waypoint("BlockWPC3c") + gvar90 = ns.WallGroup("VampireWallGroup") + obj91 = ns.Object("VampireKnight1") + obj92 = ns.Object("VKBat1") + obj93 = ns.Object("RetreatBat") + wp94 = ns.Waypoint("VampireKnight1WP") + wp95 = ns.Waypoint("BatCreate") + wp96 = ns.Waypoint("VKSpot") + InitializeVampireKnights() + gvar4 = ns.ObjectGroup("ArrowTrigGroup") + obj5 = ns.Object("Arrow1") + obj6 = ns.Object("Arrow2") + obj7 = ns.Object("Arrow3") + obj8 = ns.Object("Arrow4") + obj9 = ns.Object("Arrow5") + obj10 = ns.Object("Arrow6") + obj11 = ns.Object("Arrow7") + obj12 = ns.Object("Arrow8") + obj13 = ns.Object("Arrow9") + wp14 = ns.Waypoint("Arrow1WP") + wp15 = ns.Waypoint("Arrow2WP") + wp16 = ns.Waypoint("Arrow3WP") + wp17 = ns.Waypoint("Arrow4WP") + wp18 = ns.Waypoint("Arrow5WP") + wp19 = ns.Waypoint("Arrow6WP") + wp20 = ns.Waypoint("Arrow7WP") + wp21 = ns.Waypoint("Arrow8WP") + wp22 = ns.Waypoint("Arrow9WP") + obj97 = ns.Object("MechGolem1") + obj98 = ns.Object("MechGolem2") + obj99 = ns.Object("MechGolem3") + wp100 = ns.Waypoint("MechGolem2WP") + wp101 = ns.Waypoint("MechGolemAudioWP") + gvar102 = ns.ObjectGroup("GolemTrigGroup") + obj109 = ns.Object("MazeTrig1") + obj110 = ns.Object("MazeTrig2") + gvar103 = ns.WallGroup("GolemWallGroup") + gvar104 = ns.WallGroup("GolemWall2Group") + gvar105 = ns.WallGroup("GolemWall3Group") + gvar106 = ns.WallGroup("GolemGate1Group") + gvar107 = ns.WallGroup("GolemGate2Group") + gvar108 = ns.WallGroup("CherubWallGroup") + obj74 = ns.Object("OrbLight") + obj75 = ns.Object("OrbEffect") + wp76 = ns.Waypoint("OrbEffectWP") + wp77 = ns.Waypoint("OrbSoundWP") + gvar78 = ns.WallGroup("BouncySecretWallGroup") +} +func Secret300XP() { + ns.GiveXp(ns.GetHost(), 300) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp89) +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func PlayAction1Music() { + ns.Music(26, 100) +} +func GolemWallDown() { + ns.WallGroupOpen(gvar103) + ns.ObjectOn(obj97) + ns.AudioEvent(ns.MechGolemPowerUp, wp101) + ns.ObjectGroupOff(gvar102) + PlayAction1Music() +} +func GolemWall2Down() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar104) + ns.NoWallSound(false) + ns.ObjectOn(obj98) + ns.AudioEvent(ns.MechGolemRecognize, wp100) + ns.AudioEvent(ns.MechGolemPowerUp, wp100) +} +func GolemWall3Down() { + ns.WallGroupOpen(gvar105) + ns.ObjectOn(obj99) + ns.ObjectOn(obj88) +} +func OpenGolemGate1() { + ns.WallGroupOpen(gvar106) + ns.ObjectOff(obj109) +} +func OpenGolemGate2() { + ns.WallGroupOpen(gvar107) + ns.ObjectOff(obj110) +} +func DestroyCherubWallGroup() { + ns.WallGroupBreak(gvar108) + PlaySubMusic() +} +func HostilizeMe() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func BatToVampireKnight() { + if flag119 { + goto LABEL1 + } + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj111[0]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar117, fvar118, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar117, fvar118, 0, 0) + ns.Enchant(obj111[0], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj111[0], fvar117, fvar118) + ns.LookAtObject(obj111[0], ns.GetHost()) +} +func SetRetreatBat() { + ns.AggressionLevel(obj113, 0.83) + ns.SetCallback(obj113, 7, BatDie) + ns.SetCallback(obj113, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + if !(ns.CurrentHealth(obj113) <= 0) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj113), ns.GetObjectY(obj113), 0, 0) + ns.MoveWaypoint(wp116, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.Delete(obj113) + ns.AudioEvent(ns.BurnCast, wp116) + v0 = ns.CreateObject("Flame", wp116) + v1 = ns.CreateObject("MediumFlame", wp116) + v2 = ns.CreateObject("SmallFlame", wp116) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 85) + ns.DeleteObjectTimer(v2, 90) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 250) +LABEL1: + return +} +func ChangeOnSight() { + if !flag120 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj111[0]) + ns.Damage(obj111[0], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag119 = true + ns.FrameTimer(1, BatToVampireKnight) +} +func BatMove() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.SetCallback(ns.GetTrigger(), 4, ChangeOnSight) + ns.Move(obj112[0], wp114) +LABEL1: + return +} +func VKDie() { + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp116, fvar117, fvar118) + obj113 = ns.CreateObject("Bat", wp116) + ns.FrameTimer(1, SetRetreatBat) +} +func ZombieAmbush() { + ns.WallGroupOpen(gvar80) + ns.ObjectGroupOn(gvar79) +} +func SkeletonAttack() { + ns.WallGroupOpen(gvar81) + ns.WallGroupClose(gvar82) + ns.ObjectOn(obj83) + ns.ObjectGroupOn(gvar85) + PlayAction3Music() +} +func OpenSkeletonWallGroup2() { + ns.WallGroupOpen(gvar82) + ns.ObjectOn(obj84) +} +func Secret300() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 300) +} +func OpenSecretMechWallGroup() { + ns.WallGroupOpen(gvar87) + ns.GroupAggressionLevel(gvar86, 0.83) + Secret300() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war10c/dummy_test.go b/examples/war10c/dummy_test.go new file mode 100644 index 0000000..819f57f --- /dev/null +++ b/examples/war10c/dummy_test.go @@ -0,0 +1,6 @@ +package war10c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war10c/war10c.go b/examples/war10c/war10c.go new file mode 100644 index 0000000..018eb53 --- /dev/null +++ b/examples/war10c/war10c.go @@ -0,0 +1,684 @@ +package war10c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 [21]ns.ObjectID + ivar5 int + obj6 ns.ObjectID + obj7 ns.ObjectID + wp8 ns.WaypointID + wp9 ns.WaypointID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 [6]ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + gvar40 ns.ObjectGroupID + gvar41 ns.ObjectGroupID + obj42 ns.ObjectID + wp43 [2]ns.WaypointID + wp44 ns.WaypointID + wp45 ns.WaypointID + gvar46 ns.WallGroupID + gvar47 ns.WallGroupID + gvar48 ns.WallGroupID + gvar49 ns.WallGroupID + gvar50 ns.WallGroupID + gvar51 ns.WallGroupID + gvar52 ns.WallGroupID + gvar53 ns.WallGroupID + gvar54 ns.WallGroupID + gvar55 ns.WallGroupID + gvar56 ns.WallGroupID + gvar57 ns.WallGroupID + gvar58 ns.WallGroupID + gvar59 ns.WallGroupID + flag60 bool + flag61 bool + flag62 bool + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + ivar68 int + wp69 ns.WaypointID + wp70 ns.WaypointID + obj71 ns.ObjectID + gvar72 ns.ObjectGroupID + wp73 [5]ns.WaypointID + wp74 ns.WaypointID + obj75 [2]ns.ObjectID + obj76 [2]ns.ObjectID + obj77 ns.ObjectID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + fvar81 float32 + fvar82 float32 + flag83 bool + flag84 bool +) + +func init() { + flag60 = false + flag61 = false + flag62 = false + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + ivar68 = 0 + flag83 = false + flag84 = false +} +func DisableAT(a1 int) { + ns.ObjectOff(obj4[a1]) +} +func FireAT0() { + ns.ObjectOn(obj4[0]) + ns.FrameTimerWithArg(1, nil, DisableAT) +} +func FireAT1() { + ns.ObjectOn(obj4[1]) + ns.FrameTimerWithArg(1, 1, DisableAT) +} +func FireAT2() { + ns.ObjectOn(obj4[2]) + ns.FrameTimerWithArg(1, 2, DisableAT) +} +func FireAT3() { + ns.ObjectOn(obj4[3]) + ns.FrameTimerWithArg(1, 3, DisableAT) +} +func FireAT4() { + ns.ObjectOn(obj4[4]) + ns.FrameTimerWithArg(1, 4, DisableAT) +} +func FireAT5() { + ns.ObjectOn(obj4[5]) + ns.FrameTimerWithArg(1, 5, DisableAT) +} +func FireAT6() { + ns.ObjectOn(obj4[6]) + ns.FrameTimerWithArg(1, 6, DisableAT) +} +func FireAT7() { + ns.ObjectOn(obj4[7]) + ns.FrameTimerWithArg(1, 7, DisableAT) +} +func FireAT8() { + ns.ObjectOn(obj4[8]) + ns.FrameTimerWithArg(1, 8, DisableAT) +} +func FireAT9() { + ns.ObjectOn(obj4[9]) + ns.FrameTimerWithArg(1, 9, DisableAT) +} +func FireAT10() { + ns.ObjectOn(obj4[10]) + ns.FrameTimerWithArg(1, 10, DisableAT) +} +func FireAT11() { + ns.ObjectOn(obj4[11]) + ns.FrameTimerWithArg(1, 11, DisableAT) +} +func FireAT17() { + ns.ObjectOn(obj4[17]) + ns.FrameTimerWithArg(1, 17, DisableAT) +} +func FireAT18() { + ns.ObjectOn(obj4[18]) + ns.FrameTimerWithArg(1, 18, DisableAT) +} +func FireAT19() { + ns.ObjectOn(obj4[19]) + ns.FrameTimerWithArg(1, 19, DisableAT) +} +func FireAT20() { + ns.ObjectOn(obj4[20]) + ns.FrameTimerWithArg(1, 20, DisableAT) +} +func FireATRow() { + ns.ObjectOn(obj4[12]) + ns.ObjectOn(obj4[13]) + ns.ObjectOn(obj4[14]) + ns.ObjectOn(obj4[15]) + ns.ObjectOn(obj4[16]) + ivar5 = 12 + for { + if !(ivar5 < 17) { + goto LABEL1 + } + ns.FrameTimerWithArg(1, ivar5, DisableAT) + ivar5 += 1 + } +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OrbLightOff() { + ns.ObjectOff(obj6) + ns.MoveObject(obj7, ns.GetWaypointX(wp8), ns.GetWaypointY(wp8)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj6, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj7, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp9, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj6) + ns.AudioEvent(ns.BallBounce, wp9) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func StairAccess2() { + if !(flag62 == true && flag63 == true) { + goto LABEL1 + } + ns.UnlockDoor(obj12) + ns.UnlockDoor(obj13) +LABEL1: + return +} +func CreateCherub() { + var v0 int + if !(ivar68 < 6) { + goto LABEL1 + } + v0 = ns.Random(0, 1) + obj24[ivar68] = ns.CreateObject("EvilCherub", wp43[v0]) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp43[v0]), ns.GetWaypointY(wp43[v0]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp43[v0]), ns.GetWaypointY(wp43[v0]), 0, 0) + ns.SetCallback(obj24[ivar68], 5, CreateCherub) + ns.SetRoamFlag(obj24[ivar68], 128) + ns.AggressionLevel(obj24[ivar68], 0.83) + ivar68 += 1 + goto LABEL2 +LABEL1: + return +LABEL2: + return +} +func WakeVKBat2() { + ns.ObjectOn(obj76[1]) +} +func PlayAction2Music() { + ns.Music(27, 100) +} +func CherubHostilize() { + ns.GroupAggressionLevel(gvar41, 0.83) +} +func OpenSecretRoom() { + ns.WallGroupOpen(gvar49) +} +func EnableTreasureLich1() { + ns.ObjectOn(obj14) +} +func AccessTreasureRoom1() { + ns.WallGroupOpen(gvar46) +} +func EnableTreasureLich2() { + ns.ObjectOn(obj15) +} +func AccessTreasureRoom2() { + ns.WallGroupOpen(gvar47) +} +func EnableTreasureMech() { + ns.ObjectOn(obj16) +} +func AccessTreasureRoom3() { + ns.WallGroupOpen(gvar48) +} +func EnableRoom() { + if !(ns.IsCaller(ns.GetHost()) && flag60 == false) { + goto LABEL1 + } + flag60 = true + ns.ObjectOn(obj27) + ns.LockDoor(obj10) + ns.LockDoor(obj11) +LABEL1: + return +} +func StairAccess1() { + ns.WallGroupOpen(gvar50) + ns.UnlockDoor(obj10) + ns.UnlockDoor(obj11) +} +func AllowAccess2() { + ns.PrintToAll("War10c:SentryDisabled") + ns.ObjectOff(obj21) + ns.ObjectOff(obj20) + ns.ObjectOff(obj19) + ns.AudioEvent(ns.Gear2, wp69) +} +func EnableRoom2() { + PlayAction2Music() + if !(ns.IsCaller(ns.GetHost()) && flag61 == false) { + goto LABEL1 + } + flag61 = true + ns.LockDoor(obj12) + ns.LockDoor(obj13) + ns.FrameTimer(800, CreateCherub) +LABEL1: + return +} +func OneDown() { + flag62 = true + ns.FrameTimer(1, StairAccess2) +} +func TwoDown() { + flag63 = true + ns.FrameTimer(1, StairAccess2) +} +func SwitchOffSentries() { + ns.ObjectOff(obj17) + ns.ObjectOff(obj18) + ns.UnlockDoor(obj12) + ns.UnlockDoor(obj13) +} +func SwitchOnSentries() { + ns.ObjectOn(obj17) + ns.ObjectOn(obj18) +} +func UnlockAccessDoors() { + ns.ObjectOff(obj31) + ns.UnlockDoor(obj25) + ns.UnlockDoor(obj26) +} +func OpenWall01() { + ns.WallGroupOpen(gvar56) + ns.AggressionLevel(obj42, 0.83) +} +func OpenWindowWall1() { + ns.WallGroupOpen(gvar57) +} +func CloseWindowWall1() { + ns.WallGroupClose(gvar57) +} +func OpenWindowWall2() { + ns.WallGroupOpen(gvar58) +} +func CloseWindowWall2() { + ns.WallGroupClose(gvar58) +} +func OpenCage1() { + ns.WallGroupOpen(gvar51) + ns.ObjectOn(obj28) +} +func OpenCage2() { + ns.WallGroupOpen(gvar52) + ns.ObjectOn(obj30) +} +func OpenCage3() { + ns.WallGroupOpen(gvar53) + ns.ObjectOn(obj29) +} +func OpenCage4() { + ns.WallGroupOpen(gvar54) + WakeVKBat2() +} +func OpenAccess() { + ns.WallGroupOpen(gvar55) +} +func CheckIdols() { + if !(flag64 == true && flag65 == true) { + goto LABEL1 + } + ns.ObjectGroupOn(gvar40) +LABEL1: + return +} +func BlueIdol() { + if !ns.IsCaller(obj32) { + goto LABEL1 + } + flag64 = true + CheckIdols() + ns.ObjectOff(obj38) + ns.ObjectOn(obj33) + ns.Delete(obj32) + ns.Delete(obj36) + ns.AudioEvent(ns.Gear2, wp70) +LABEL1: + return +} +func RedIdol() { + if !ns.IsCaller(obj34) { + goto LABEL1 + } + flag65 = true + CheckIdols() + ns.ObjectOff(obj39) + ns.ObjectOn(obj35) + ns.Delete(obj34) + ns.Delete(obj37) + ns.AudioEvent(ns.Gear2, wp70) +LABEL1: + return +} +func CheckSwitches() { + if !(flag66 == true && flag67 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar59) +LABEL1: + ns.AudioEvent("CreatureCageAppear", wp45) +} +func ExitWallSwitch1() { + ns.AudioEvent(ns.Gear3, wp45) + flag66 = true + CheckSwitches() +} +func ExitWallSwitch2() { + ns.AudioEvent(ns.Gear3, wp45) + flag67 = true + CheckSwitches() +} +func InitializeVampireKnights() { + obj75[0] = ns.Object("VampireKnight1") + obj75[1] = ns.Object("VampireKnight2") + obj76[0] = ns.Object("VKBat1") + obj76[1] = ns.Object("VKBat2") + wp78 = ns.Waypoint("VKSpot") + wp79 = ns.Waypoint("VampireKnight1WP") + wp80 = ns.Waypoint("BatCreate") +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func MapInitialize() { + wp70 = ns.Waypoint("LichKeyAudioWP") + wp69 = ns.Waypoint("SentryAudioWP") + gvar41 = ns.ObjectGroup("CherubPitGroup") + obj6 = ns.Object("OrbLight") + obj7 = ns.Object("OrbEffect") + obj10 = ns.Object("ForceOrbDoorA") + obj11 = ns.Object("ForceOrbDoorB") + obj12 = ns.Object("ForceOrbDoorC") + obj13 = ns.Object("ForceOrbDoorD") + obj4[0] = ns.Object("AT0") + obj4[1] = ns.Object("AT1") + obj4[2] = ns.Object("AT2") + obj4[3] = ns.Object("AT3") + obj4[4] = ns.Object("AT4") + obj4[5] = ns.Object("AT5") + obj4[6] = ns.Object("AT6") + obj4[7] = ns.Object("AT7") + obj4[8] = ns.Object("AT8") + obj4[9] = ns.Object("AT9") + obj4[10] = ns.Object("AT10") + obj4[11] = ns.Object("AT11") + obj4[12] = ns.Object("AT12") + obj4[13] = ns.Object("AT13") + obj4[14] = ns.Object("AT14") + obj4[15] = ns.Object("AT15") + obj4[16] = ns.Object("AT16") + obj4[17] = ns.Object("AT17") + obj4[18] = ns.Object("AT18") + obj4[19] = ns.Object("AT19") + obj4[20] = ns.Object("AT20") + obj14 = ns.Object("TreasureLich1") + obj15 = ns.Object("TreasureLich2") + obj16 = ns.Object("TreasureMech") + obj27 = ns.Object("Necromancer1") + obj28 = ns.Object("Necromancer2") + obj29 = ns.Object("Necromancer3") + obj42 = ns.Object("Lich1") + obj71 = ns.Object("Lich2") + obj30 = ns.Object("Lich3") + obj17 = ns.Object("Sentry1") + obj18 = ns.Object("Sentry2") + obj19 = ns.Object("Sentry3") + obj20 = ns.Object("Sentry4") + obj21 = ns.Object("SentrySwitch") + obj22 = ns.Object("MainSentry1") + obj23 = ns.Object("MainSentry2") + obj25 = ns.Object("AccessDoorA") + obj26 = ns.Object("AccessDoorB") + obj31 = ns.Object("OpenDoors") + obj32 = ns.Object("BlueIdol") + obj34 = ns.Object("RedIdol") + obj33 = ns.Object("BlueIdolBase") + obj35 = ns.Object("RedIdolBase") + obj36 = ns.Object("BlueTrigger") + obj37 = ns.Object("RedTrigger") + obj38 = ns.Object("BlueIdolSentry") + obj39 = ns.Object("RedIdolSentry") + wp73[0] = ns.Waypoint("N1TeleWP0") + wp73[1] = ns.Waypoint("N1TeleWP1") + wp73[2] = ns.Waypoint("N1TeleWP2") + wp73[3] = ns.Waypoint("N1TeleWP3") + wp73[4] = ns.Waypoint("N1TeleWP4") + wp9 = ns.Waypoint("OrbSoundWP") + wp8 = ns.Waypoint("OrbEffectWP") + wp43[0] = ns.Waypoint("CherubCreate1") + wp43[1] = ns.Waypoint("CherubCreate2") + gvar72 = ns.ObjectGroup("VampTriggers") + gvar40 = ns.ObjectGroup("FinalLiches") + gvar46 = ns.WallGroup("TreasureRoom1Walls") + gvar47 = ns.WallGroup("TreasureRoom2Walls") + gvar48 = ns.WallGroup("TreasureRoom3Walls") + wp44 = ns.Waypoint("MechGolemAudioWP") + gvar49 = ns.WallGroup("SecretRoomWall") + gvar50 = ns.WallGroup("ForceOrbRoomWalls1") + gvar51 = ns.WallGroup("Cage1") + gvar52 = ns.WallGroup("Cage2") + gvar53 = ns.WallGroup("Cage3") + gvar54 = ns.WallGroup("Cage4") + gvar55 = ns.WallGroup("AccessTreasureRoom3") + gvar56 = ns.WallGroup("OpeningWall01") + gvar57 = ns.WallGroup("WindowWall1") + gvar58 = ns.WallGroup("WindowWall2") + gvar59 = ns.WallGroup("LichStairAccess") + wp45 = ns.Waypoint("ExitAudioWP") + wp74 = ns.Waypoint("Secret1AudioWP") + InitializeVampireKnights() + PlaySubMusic() + ns.LockDoor(obj25) + ns.LockDoor(obj26) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp74) +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func Necro1TeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp73[v2]) + v1 = ns.GetWaypointY(wp73[v2]) + ns.PauseObject(ns.GetTrigger(), 15) + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func SmackPlayer() { + r0 := ns.IsAttackedBy(ns.GetCaller(), ns.GetTrigger()) + if !r0 { + goto LABEL1 + } + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller())) +LABEL1: + return +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func BatToVampireKnight() { + if flag83 { + goto LABEL1 + } + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj75[0]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar81, fvar82, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar81, fvar82, 0, 0) + ns.Enchant(obj75[0], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj75[0], fvar81, fvar82) + ns.LookAtObject(obj75[0], ns.GetHost()) + flag83 = false +} +func BatToVampireKnight2() { + if flag83 { + goto LABEL1 + } + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj75[1]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar81, fvar82, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar81, fvar82, 0, 0) + ns.Enchant(obj75[1], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj75[1], fvar81, fvar82) + ns.LookAtObject(obj75[1], ns.GetHost()) +} +func SetRetreatBat() { + ns.AggressionLevel(obj77, 0.83) + ns.SetCallback(obj77, 7, BatDie) + ns.SetCallback(obj77, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + if !(ns.CurrentHealth(ns.GetTrigger()) <= 0) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveWaypoint(wp80, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(ns.GetTrigger(), ns.GetWaypointX(wp79), ns.GetWaypointY(wp79)) + ns.Delete(obj77) + ns.AudioEvent(ns.BurnCast, wp80) + v0 = ns.CreateObject("Flame", wp80) + v1 = ns.CreateObject("MediumFlame", wp80) + v2 = ns.CreateObject("SmallFlame", wp80) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 83) + ns.DeleteObjectTimer(v2, 85) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 250) +LABEL1: + return +} +func ChangeOnSight() { + if !flag84 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + if flag83 { + goto LABEL1 + } + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj75[0]) + ns.Damage(obj75[0], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag83 = true + ns.FrameTimer(1, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight2() { + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj75[1]) + ns.Damage(obj75[1], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag83 = true + ns.FrameTimer(1, BatToVampireKnight2) +} +func BatMove() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.SetCallback(ns.GetTrigger(), 4, ChangeOnSight) + ns.PauseObject(ns.GetTrigger(), 15) +LABEL1: + return +} +func VKDie() { + fvar81 = ns.GetObjectX(ns.GetTrigger()) + fvar82 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp80, fvar81, fvar82) + obj77 = ns.CreateObject("Bat", wp80) + ns.FrameTimer(1, SetRetreatBat) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war10d/dummy_test.go b/examples/war10d/dummy_test.go new file mode 100644 index 0000000..c7f88d8 --- /dev/null +++ b/examples/war10d/dummy_test.go @@ -0,0 +1,6 @@ +package war10d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war10d/war10d.go b/examples/war10d/war10d.go new file mode 100644 index 0000000..648416a --- /dev/null +++ b/examples/war10d/war10d.go @@ -0,0 +1,757 @@ +package war10d + +import ( + "github.com/noxworld-dev/noxscript/ns/v3" + "strconv" +) + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + gvar6 ns.WallGroupID + gvar7 ns.ObjectGroupID + gvar8 ns.ObjectGroupID + gvar9 ns.ObjectGroupID + gvar10 ns.WallGroupID + wp11 ns.WaypointID + wp12 ns.WaypointID + wp13 ns.WaypointID + wp14 ns.WaypointID + gvar15 ns.WallGroupID + gvar16 ns.ObjectGroupID + gvar17 ns.ObjectGroupID + gvar18 ns.ObjectGroupID + wp19 ns.WaypointID + wp20 ns.WaypointID + wp21 ns.WaypointID + obj22 ns.ObjectID + wp23 [32]ns.WaypointID + obj24 ns.ObjectID + gvar25 ns.WallGroupID + gvar26 int + gvar27 int + gvar28 int + gvar29 int + gvar30 ns.ObjectGroupID + gvar31 ns.ObjectGroupID + gvar32 ns.WallGroupID + gvar33 ns.WallGroupID + gvar34 ns.ObjectGroupID + obj35 ns.ObjectID + obj36 ns.ObjectID + flag37 bool + flag38 bool + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + wp44 ns.WaypointID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + gvar63 int + gvar64 int + gvar65 int + gvar66 int + gvar67 int + gvar68 int + gvar69 int + obj70 ns.ObjectID + wp71 [6]ns.WaypointID + gvar72 ns.WallGroupID + gvar73 int + gvar74 int + gvar75 int + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + gvar84 ns.WallGroupID + gvar85 ns.ObjectGroupID + gvar86 ns.ObjectGroupID + gvar87 ns.WallGroupID + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + obj103 ns.ObjectID + obj104 ns.ObjectID + obj105 ns.ObjectID + gvar106 ns.ObjectGroupID + gvar107 ns.ObjectGroupID + gvar108 ns.ObjectGroupID + gvar109 ns.ObjectGroupID + gvar110 ns.ObjectGroupID + gvar111 ns.ObjectGroupID + gvar112 ns.WallGroupID + gvar113 ns.WallGroupID + gvar114 ns.WallGroupID + flag115 bool + flag116 bool + flag117 bool + flag118 bool + wp119 ns.WaypointID + gvar120 ns.ObjectGroupID + wp121 ns.WaypointID + wp122 ns.WaypointID +) + +func init() { + gvar63 = 0 + gvar64 = 1 + gvar65 = 2 + gvar66 = 3 + gvar67 = 4 + gvar68 = 5 + gvar69 = gvar63 + gvar73 = 0 + gvar74 = 1 + gvar75 = gvar73 + flag37 = false + flag38 = false + flag115 = false + flag116 = false + flag117 = false + flag118 = false +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func ActivateSmokePuffs() { + var v0 int + v0 = 0 + for { + if !(v0 < 32) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp23[v0]), ns.GetWaypointY(wp23[v0]), 0, 0) + v0 += 2 + } +LABEL1: + return +} +func FilterHecubah() int { + if !ns.IsCaller(obj5) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func HecubahGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp13) + v1 = ns.GetWaypointY(wp13) + v2 = ns.GetWaypointX(wp14) + v3 = ns.GetWaypointY(wp14) + ns.CreatureGuard(obj5, v0, v1, v2, v3, 0) + ns.NoWallSound(true) + ns.WallGroupClose(gvar25) + ns.NoWallSound(false) +} +func EnableOrbMonsterGroup() { + ns.ObjectGroupOn(gvar7) + ns.Frozen(ns.GetHost(), false) + ns.WallGroupOpen(gvar6) + ns.FrameTimer(2, ActivateSmokePuffs) + ns.WallGroupClose(gvar10) +} +func HecubahExit() { + ns.Enchant(obj5, ns.ENCHANT_HASTED, 100) + ns.Move(obj5, wp13) + ns.WideScreen(false) + ns.FrameTimer(60, EnableOrbMonsterGroup) +} +func HecubahDialogEnd() { + ns.FrameTimer(30, HecubahExit) + ns.CancelDialog(obj5) +} +func HecubahDialogStart() { + ns.TellStory(ns.DemonRecognize, "Con07H.scr:HecubahTalk02") +} +func HecubahTrigger() { + ns.LookAtObject(obj5, ns.GetHost()) + ns.StoryPic(obj5, "HecubahPic") + ns.SetDialog(obj5, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj5, ns.GetHost()) +} +func HecubahEnter() { + ns.Move(obj5, wp12) +} +func HecubahWallsDown() { + ns.WallGroupOpen(gvar15) + ns.FrameTimer(1, HecubahEnter) +} +func GetOrb() { + ns.ObjectOff(obj4) + ns.ObjectGroupOff(gvar17) + ns.SetHalberd(3) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahWallsDown) + ns.ObjectGroupOff(gvar16) + ns.JournalEntry(ns.GetHost(), "War11Hecubah", 1) + ns.JournalEdit(ns.GetHost(), "War10aOrbQuest", 4) +} +func EnableAllMonsters() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar7) + ns.ObjectGroupOn(gvar8) + ns.ObjectGroupOn(gvar9) +} +func HecubahVanish1() { + ns.ObjectOn(obj22) + ns.ObjectGroupOff(gvar18) + ns.Move(obj5, wp19) + ns.AudioEvent(ns.HecubahTaunt, wp13) + ns.WideScreen(false) + ns.FrameTimer(60, EnableAllMonsters) +} +func HecubahTakesOff() { + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahVanish1) + ns.ObjectGroupOff(gvar7) + ns.ObjectGroupOff(gvar8) + ns.ObjectGroupOff(gvar9) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar25) + ns.NoWallSound(false) +} +func HecubahVanish2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp20) + v1 = ns.GetWaypointY(wp20) + v2 = ns.GetWaypointX(wp19) + v3 = ns.GetWaypointY(wp19) + ns.Effect(ns.SMOKE_BLAST, v2, v3, 0, 0) + ns.AudioEvent(ns.TeleportOut, wp19) + ns.MoveObject(obj5, v0, v1) + ns.ObjectOn(obj24) +} +func MapSwitch() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp21) + v1 = ns.GetWaypointY(wp21) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), v0, v1) +} +func DestroyMe() { + ns.Delete(ns.GetCaller()) +} +func PlayerFadeOut() { + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(60, MapSwitch) +} +func TeleportPlayer() { + ns.Blind() + ns.Frozen(ns.GetHost(), true) +} +func EnableMonsterGroup2() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.ObjectGroupOn(gvar8) +} +func EnableMonsterGroup3() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.ObjectGroupOn(gvar9) +} +func LichWallsDown2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + v10 float32 + v11 float32 + v12 float32 + v13 float32 + v14 float32 + v15 float32 + ) + v0 = ns.GetWaypointX(wp47) + v1 = ns.GetWaypointY(wp47) + v2 = ns.GetWaypointX(wp48) + v3 = ns.GetWaypointY(wp48) + v4 = ns.GetWaypointX(wp49) + v5 = ns.GetWaypointY(wp49) + v6 = ns.GetWaypointX(wp50) + v7 = ns.GetWaypointY(wp50) + v8 = ns.GetWaypointX(wp51) + v9 = ns.GetWaypointY(wp51) + v10 = ns.GetWaypointX(wp52) + v11 = ns.GetWaypointY(wp52) + v12 = ns.GetWaypointX(wp53) + v13 = ns.GetWaypointY(wp53) + v14 = ns.GetWaypointX(wp54) + v15 = ns.GetWaypointY(wp54) + ns.WallGroupOpen(gvar33) + ns.ObjectGroupOn(gvar34) + ns.ObjectGroupOn(gvar31) + ns.FrameTimer(1, LichMove) + ns.Effect(ns.SMOKE_BLAST, v0, v1, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v2, v3, v2, v3) + ns.Effect(ns.SMOKE_BLAST, v4, v5, v4, v5) + ns.Effect(ns.SMOKE_BLAST, v6, v7, v6, v7) + ns.Effect(ns.SMOKE_BLAST, v8, v9, v8, v9) + ns.Effect(ns.SMOKE_BLAST, v10, v11, v10, v11) + ns.Effect(ns.SMOKE_BLAST, v12, v13, v12, v13) + ns.Effect(ns.SMOKE_BLAST, v14, v15, v14, v15) +} +func LichDieCheck() { + if !(flag37 && flag38) { + goto LABEL1 + } + LichWallsDown2() +LABEL1: + return +} +func LichDie1() { + flag37 = true + LichDieCheck() +} +func LichDie2() { + flag38 = true + LichDieCheck() +} +func LichMove() { + ns.Move(obj35, wp55) + ns.Move(obj36, wp56) +} +func LichWallsDown() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + v10 float32 + v11 float32 + v12 float32 + v13 float32 + v14 float32 + v15 float32 + ) + v0 = ns.GetWaypointX(wp39) + v1 = ns.GetWaypointY(wp39) + v2 = ns.GetWaypointX(wp40) + v3 = ns.GetWaypointY(wp40) + v4 = ns.GetWaypointX(wp41) + v5 = ns.GetWaypointY(wp41) + v6 = ns.GetWaypointX(wp42) + v7 = ns.GetWaypointY(wp42) + v8 = ns.GetWaypointX(wp43) + v9 = ns.GetWaypointY(wp43) + v10 = ns.GetWaypointX(wp44) + v11 = ns.GetWaypointY(wp44) + v12 = ns.GetWaypointX(wp45) + v13 = ns.GetWaypointY(wp45) + v14 = ns.GetWaypointX(wp46) + v15 = ns.GetWaypointY(wp46) + ns.WallGroupOpen(gvar32) + ns.ObjectGroupOn(gvar30) + ns.Effect(ns.SMOKE_BLAST, v0, v1, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v2, v3, v2, v3) + ns.Effect(ns.SMOKE_BLAST, v4, v5, v4, v5) + ns.Effect(ns.SMOKE_BLAST, v6, v7, v6, v7) + ns.Effect(ns.SMOKE_BLAST, v8, v9, v8, v9) + ns.Effect(ns.SMOKE_BLAST, v10, v11, v10, v11) + ns.Effect(ns.SMOKE_BLAST, v12, v13, v12, v13) + ns.Effect(ns.SMOKE_BLAST, v14, v15, v14, v15) +} +func SentryRun() { + var v0 int + v0 = gvar69 + if v0 == gvar63 { + goto LABEL1 + } + if v0 == gvar64 { + goto LABEL2 + } + if v0 == gvar65 { + goto LABEL3 + } + if v0 == gvar66 { + goto LABEL4 + } + if v0 == gvar67 { + goto LABEL5 + } + if v0 == gvar68 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.ObjectOff(obj57) + ns.ObjectOn(obj58) + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOff(obj62) + ns.FrameTimer(25, SentryRun) + gvar69 = gvar64 + goto LABEL7 +LABEL2: + ns.ObjectOn(obj57) + ns.ObjectOn(obj58) + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.ObjectOff(obj61) + ns.ObjectOn(obj62) + ns.FrameTimer(25, SentryRun) + gvar69 = gvar65 + goto LABEL7 +LABEL3: + ns.ObjectOn(obj57) + ns.ObjectOn(obj58) + ns.ObjectOn(obj59) + ns.ObjectOff(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.FrameTimer(25, SentryRun) + gvar69 = gvar66 + goto LABEL7 +LABEL4: + ns.ObjectOn(obj57) + ns.ObjectOn(obj58) + ns.ObjectOff(obj59) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.FrameTimer(25, SentryRun) + gvar69 = gvar67 + goto LABEL7 +LABEL5: + ns.ObjectOn(obj57) + ns.ObjectOff(obj58) + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.FrameTimer(25, SentryRun) + gvar69 = gvar68 + goto LABEL7 +LABEL6: + ns.ObjectOn(obj57) + ns.ObjectOn(obj58) + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.ObjectOn(obj61) + ns.ObjectOn(obj62) + ns.FrameTimer(25, SentryRun) + gvar69 = gvar63 + goto LABEL7 +LABEL7: + return +} +func LLDies() { + gvar75 = gvar74 +} +func OpenLLWallGroup() { + ns.WallGroupOpen(gvar72) +} +func Ghost1Face() { + ns.LookAtObject(obj70, ns.GetHost()) +} +func Ghost2Face() { + ns.LookAtObject(obj70, ns.GetHost()) +} +func PlayAction2Music() { + ns.Music(27, 100) +} +func MapInitialize() { + var v0 int + gvar30 = ns.ObjectGroup("LichGroup") + gvar31 = ns.ObjectGroup("LichGroup2") + gvar32 = ns.WallGroup("LichWallGroup") + gvar33 = ns.WallGroup("LichWallGroup2") + gvar34 = ns.ObjectGroup("LichElevatorGroup") + obj35 = ns.Object("Lich1") + obj36 = ns.Object("Lich2") + wp39 = ns.Waypoint("DestroyWP1") + wp40 = ns.Waypoint("DestroyWP2") + wp41 = ns.Waypoint("DestroyWP3") + wp42 = ns.Waypoint("DestroyWP4") + wp43 = ns.Waypoint("DestroyWP5") + wp44 = ns.Waypoint("DestroyWP6") + wp45 = ns.Waypoint("DestroyWP7") + wp46 = ns.Waypoint("DestroyWP8") + wp47 = ns.Waypoint("DestroyWP1a") + wp48 = ns.Waypoint("DestroyWP2a") + wp49 = ns.Waypoint("DestroyWP3a") + wp50 = ns.Waypoint("DestroyWP4a") + wp51 = ns.Waypoint("DestroyWP5a") + wp52 = ns.Waypoint("DestroyWP6a") + wp53 = ns.Waypoint("DestroyWP7a") + wp54 = ns.Waypoint("DestroyWP8a") + wp55 = ns.Waypoint("LichWP1") + wp56 = ns.Waypoint("LichWP2") + obj57 = ns.Object("Sentry1") + obj58 = ns.Object("Sentry2") + obj59 = ns.Object("Sentry3") + obj60 = ns.Object("Sentry4") + obj61 = ns.Object("Sentry5") + obj62 = ns.Object("Sentry6") + SentryRun() + obj70 = ns.Object("LLGhost") + wp71[0] = ns.Waypoint("LLGhostWP1") + wp71[1] = ns.Waypoint("LLGhostWP2") + wp71[2] = ns.Waypoint("LLGhostWP3") + wp71[3] = ns.Waypoint("LLGhostWP4") + wp71[4] = ns.Waypoint("LLGhostWP5") + wp71[5] = ns.Waypoint("LLGhostWP6") + gvar72 = ns.WallGroup("LLWallGroup") + obj76 = ns.Object("Spike1") + obj77 = ns.Object("Spike2") + obj78 = ns.Object("Spike3") + obj79 = ns.Object("Spike4") + wp80 = ns.Waypoint("Spike1WP") + wp81 = ns.Waypoint("Spike2WP") + wp82 = ns.Waypoint("Spike3WP") + wp83 = ns.Waypoint("Spike4WP") + gvar84 = ns.WallGroup("SpikeWallGroup") + gvar85 = ns.ObjectGroup("SpikeWallTrigGroup") + gvar86 = ns.ObjectGroup("CherubGroup") + gvar87 = ns.WallGroup("CherubWallGroup") + obj88 = ns.Object("Cherub1") + obj89 = ns.Object("Cherub2") + obj90 = ns.Object("Cherub3") + obj91 = ns.Object("Cherub4") + obj92 = ns.Object("Cherub5") + obj93 = ns.Object("Cherub6") + obj94 = ns.Object("Cherub7") + obj95 = ns.Object("Cherub8") + obj96 = ns.Object("Cherub9") + obj97 = ns.Object("Cherub10") + gvar106 = ns.ObjectGroup("SentryGroup1") + gvar107 = ns.ObjectGroup("SentryGroup2") + gvar108 = ns.ObjectGroup("SentryGroup3") + gvar109 = ns.ObjectGroup("SentryGroup4") + obj98 = ns.Object("Sentry1L") + obj99 = ns.Object("Sentry1R") + obj100 = ns.Object("Sentry2L") + obj101 = ns.Object("Sentry2R") + obj102 = ns.Object("Sentry3L") + obj103 = ns.Object("Sentry3R") + obj104 = ns.Object("Sentry4L") + obj105 = ns.Object("Sentry4R") + gvar111 = ns.ObjectGroup("OrbTriggerGroup") + gvar110 = ns.ObjectGroup("SentryMonsterGroup") + gvar112 = ns.WallGroup("OrbWallGroup1") + gvar113 = ns.WallGroup("OrbWallGroup2") + gvar114 = ns.WallGroup("OrbWallGroup3") + gvar10 = ns.WallGroup("OrbWallGroup4") + wp119 = ns.Waypoint("OrbXPWP") + gvar120 = ns.ObjectGroup("OrbXPTrigGroup") + obj4 = ns.Object("OrbPool1") + obj5 = ns.Object("Hecubah") + gvar7 = ns.ObjectGroup("OrbMonsterGroup") + gvar8 = ns.ObjectGroup("OrbMonsterGroup2") + gvar9 = ns.ObjectGroup("OrbMonsterGroup3") + gvar6 = ns.WallGroup("OrbWallGroupFinal") + wp11 = ns.Waypoint("OrbAudioWP") + gvar15 = ns.WallGroup("HecubahWallGroup") + wp12 = ns.Waypoint("HecubahEnterWP") + wp13 = ns.Waypoint("HecubahExitWP") + wp14 = ns.Waypoint("HecubahLookWP") + gvar16 = ns.ObjectGroup("OrbSoundGroup") + gvar17 = ns.ObjectGroup("OrbPoolTrigGroup") + gvar18 = ns.ObjectGroup("HecubahVanishTrigGroup") + wp19 = ns.Waypoint("HecubahVanishWP") + wp20 = ns.Waypoint("HecubahEndWP") + wp21 = ns.Waypoint("MapSwitchWP") + obj22 = ns.Object("HecubahEndTrig") + obj24 = ns.Object("ExitTeleporter") + wp121 = ns.Waypoint("Secret1AudioWP") + wp122 = ns.Waypoint("Secret2AudioWP") + PlayAction2Music() + gvar25 = ns.WallGroup("InvisibleWallGroup") + ns.WallGroupOpen(gvar25) + v0 = 0 + for { + if !(v0 < 32) { + goto LABEL1 + } + wp23[v0] = ns.Waypoint("SmokeWP" + strconv.Itoa(v0+1)) + v0 += 1 + } +LABEL1: + return +} +func OrbXP() { + ns.ObjectGroupOff(gvar120) + ns.AudioEvent(ns.FlagDrop, wp119) + ns.GiveXp(ns.GetHost(), 2000) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp121) +} +func Secret200XP() { + ns.GiveXp(ns.GetHost(), 200) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp122) +} +func HostilizeMe() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func PlayOrbMusic() { + ns.Music(12, 100) +} +func SpikeMove() { + ns.ObjectGroupOff(gvar85) + ns.AudioEvent(ns.SpikeBlockMove, wp83) + ns.WallGroupOpen(gvar84) + ns.Move(obj76, wp80) + ns.Move(obj77, wp81) + ns.Move(obj78, wp82) + ns.Move(obj79, wp83) + PlayAction3Music() +} +func OpenOrbWallGroup1() { + if !(!ns.IsObjectOn(obj98) && !ns.IsObjectOn(obj99) && !ns.IsObjectOn(obj100) && !ns.IsObjectOn(obj101) && !ns.IsObjectOn(obj102) && !ns.IsObjectOn(obj103) && !ns.IsObjectOn(obj104) && !ns.IsObjectOn(obj105)) { + goto LABEL1 + } + ns.WallGroupOpen(gvar112) +LABEL1: + return +} +func ToggleSG1() { + ns.ObjectGroupToggle(gvar106) + OpenOrbWallGroup1() +} +func EnableSG1() { + ns.ObjectGroupOn(gvar106) +} +func ToggleSG2() { + ns.ObjectGroupToggle(gvar107) + OpenOrbWallGroup1() +} +func EnableSG2() { + ns.ObjectGroupOn(gvar107) +} +func ToggleSG3() { + ns.ObjectGroupToggle(gvar108) + OpenOrbWallGroup1() +} +func EnableSG3() { + ns.ObjectGroupOn(gvar108) +} +func ToggleSG4() { + ns.ObjectGroupToggle(gvar109) + OpenOrbWallGroup1() +} +func EnableSG4() { + ns.ObjectGroupOn(gvar109) +} +func OpenOrbWallGroup2() { + ns.WallGroupOpen(gvar113) + ns.ObjectGroupOn(gvar110) + ns.ObjectGroupOn(gvar86) + ns.WallGroupOpen(gvar87) +} +func OpenOrbWallGroup3() { + ns.WallGroupOpen(gvar114) +} +func OpenOrbWallGroup4() { + ns.WallGroupOpen(gvar10) + ns.ObjectGroupOff(gvar111) + ns.ObjectGroupOff(gvar106) + ns.ObjectGroupOff(gvar107) + ns.ObjectGroupOff(gvar108) + ns.ObjectGroupOff(gvar109) +} +func BossDieCheck() { + if !(flag115 && flag116 && flag117 && flag118) { + goto LABEL1 + } + OpenOrbWallGroup3() +LABEL1: + return +} +func BossDie1() { + flag115 = true + BossDieCheck() +} +func BossDie2() { + flag116 = true + BossDieCheck() +} +func BossDie3() { + flag117 = true + BossDieCheck() +} +func BossDie4() { + flag118 = true + BossDieCheck() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/war11a/dummy_test.go b/examples/war11a/dummy_test.go new file mode 100644 index 0000000..03070a9 --- /dev/null +++ b/examples/war11a/dummy_test.go @@ -0,0 +1,6 @@ +package war11a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/war11a/war11a.go b/examples/war11a/war11a.go new file mode 100644 index 0000000..283f347 --- /dev/null +++ b/examples/war11a/war11a.go @@ -0,0 +1,1921 @@ +package war11a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + wp9 [5]ns.WaypointID + wp10 [4]ns.WaypointID + wp11 [9]ns.WaypointID + wp12 [9]ns.WaypointID + wp13 [9]ns.WaypointID + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + gvar30 int + gvar31 int + flag32 bool + flag33 bool + fvar34 float32 + fvar35 float32 + ivar36 int + ivar37 int + ivar38 int + ivar39 int + ivar40 int + gvar41 int + gvar42 int + gvar43 int + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 [4]ns.ObjectID + obj67 [5]ns.ObjectID + wp68 [4]ns.WaypointID + wp69 ns.WaypointID + wp70 ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + wp73 ns.WaypointID + wp74 ns.WaypointID + wp75 ns.WaypointID +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + gvar14 = gvar4 + gvar15 = gvar5 + gvar16 = gvar4 + gvar17 = gvar5 + gvar18 = gvar4 + gvar19 = gvar5 + gvar20 = gvar4 + gvar21 = gvar5 + gvar22 = gvar4 + gvar23 = gvar5 + gvar24 = gvar4 + gvar25 = gvar5 + gvar26 = gvar4 + gvar27 = gvar5 + gvar28 = gvar4 + gvar29 = gvar5 + gvar30 = gvar4 + gvar31 = gvar5 + flag32 = false + flag33 = true + ivar36 = 0 + ivar37 = 0 + ivar39 = 0 + ivar40 = 0 + gvar41 = 0 + gvar42 = 0 + gvar43 = 1 +} +func Flame0() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar15 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar15 = gvar5 + gvar14 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp9[0]) + v1[1] = ns.CreateObject("SmallFlame", wp11[0]) + v1[2] = ns.CreateObject("SmallFlame", wp12[0]) + v1[3] = ns.CreateObject("SmallFlame", wp13[0]) + if gvar14 != gvar4 { + goto LABEL11 + } + gvar15 = gvar6 + goto LABEL12 +LABEL11: + gvar15 = gvar4 +LABEL12: + gvar14 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp9[0]) + v1[1] = ns.CreateObject("MediumFlame", wp11[0]) + v1[2] = ns.CreateObject("MediumFlame", wp12[0]) + v1[3] = ns.CreateObject("MediumFlame", wp13[0]) + if gvar14 != gvar5 { + goto LABEL15 + } + gvar15 = gvar7 + goto LABEL16 +LABEL15: + gvar15 = gvar5 +LABEL16: + gvar14 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp9[0]) + v1[1] = ns.CreateObject("Flame", wp11[0]) + v1[2] = ns.CreateObject("Flame", wp12[0]) + v1[3] = ns.CreateObject("Flame", wp13[0]) + if gvar14 != gvar6 { + goto LABEL19 + } + gvar15 = gvar8 + goto LABEL20 +LABEL19: + gvar15 = gvar6 +LABEL20: + gvar14 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp9[0]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp9[0]) + v1[1] = ns.CreateObject("LargeFlame", wp11[0]) + v1[2] = ns.CreateObject("LargeFlame", wp12[0]) + v1[3] = ns.CreateObject("LargeFlame", wp13[0]) + gvar15 = gvar7 + gvar14 = gvar8 + goto LABEL6 +LABEL6: + if gvar14 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame0) +LABEL23: + return +} +func Flame1() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar17 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar17 = gvar5 + gvar16 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp9[1]) + v1[1] = ns.CreateObject("SmallFlame", wp11[1]) + v1[2] = ns.CreateObject("SmallFlame", wp12[1]) + v1[3] = ns.CreateObject("SmallFlame", wp13[1]) + if gvar16 != gvar4 { + goto LABEL11 + } + gvar17 = gvar6 + goto LABEL12 +LABEL11: + gvar17 = gvar4 +LABEL12: + gvar16 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp9[1]) + v1[1] = ns.CreateObject("MediumFlame", wp11[1]) + v1[2] = ns.CreateObject("MediumFlame", wp12[1]) + v1[3] = ns.CreateObject("MediumFlame", wp13[1]) + if gvar16 != gvar5 { + goto LABEL15 + } + gvar17 = gvar7 + goto LABEL16 +LABEL15: + gvar17 = gvar5 +LABEL16: + gvar16 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp9[1]) + v1[1] = ns.CreateObject("Flame", wp11[1]) + v1[2] = ns.CreateObject("Flame", wp12[1]) + v1[3] = ns.CreateObject("Flame", wp13[1]) + if gvar16 != gvar6 { + goto LABEL19 + } + gvar17 = gvar8 + goto LABEL20 +LABEL19: + gvar17 = gvar6 +LABEL20: + gvar16 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp9[1]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp9[1]) + v1[1] = ns.CreateObject("LargeFlame", wp11[1]) + v1[2] = ns.CreateObject("LargeFlame", wp12[1]) + v1[3] = ns.CreateObject("LargeFlame", wp13[1]) + gvar17 = gvar7 + gvar16 = gvar8 + goto LABEL6 +LABEL6: + if gvar16 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame1) +LABEL23: + return +} +func Flame2() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar19 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar19 = gvar5 + gvar18 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp9[2]) + v1[1] = ns.CreateObject("SmallFlame", wp11[2]) + v1[2] = ns.CreateObject("SmallFlame", wp12[2]) + v1[3] = ns.CreateObject("SmallFlame", wp13[2]) + if gvar18 != gvar4 { + goto LABEL11 + } + gvar19 = gvar6 + goto LABEL12 +LABEL11: + gvar19 = gvar4 +LABEL12: + gvar18 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp9[2]) + v1[1] = ns.CreateObject("MediumFlame", wp11[2]) + v1[2] = ns.CreateObject("MediumFlame", wp12[2]) + v1[3] = ns.CreateObject("MediumFlame", wp13[2]) + if gvar18 != gvar5 { + goto LABEL15 + } + gvar19 = gvar7 + goto LABEL16 +LABEL15: + gvar19 = gvar5 +LABEL16: + gvar18 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp9[2]) + v1[1] = ns.CreateObject("Flame", wp11[2]) + v1[2] = ns.CreateObject("Flame", wp12[2]) + v1[3] = ns.CreateObject("Flame", wp13[2]) + if gvar18 != gvar6 { + goto LABEL19 + } + gvar19 = gvar8 + goto LABEL20 +LABEL19: + gvar19 = gvar6 +LABEL20: + gvar18 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp9[2]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp9[2]) + v1[1] = ns.CreateObject("LargeFlame", wp11[2]) + v1[2] = ns.CreateObject("LargeFlame", wp12[2]) + v1[3] = ns.CreateObject("LargeFlame", wp13[2]) + gvar19 = gvar7 + gvar18 = gvar8 + goto LABEL6 +LABEL6: + if gvar18 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame2) +LABEL23: + return +} +func Flame3() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar21 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar21 = gvar5 + gvar20 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp9[3]) + v1[1] = ns.CreateObject("SmallFlame", wp11[3]) + v1[2] = ns.CreateObject("SmallFlame", wp12[3]) + v1[3] = ns.CreateObject("SmallFlame", wp13[3]) + if gvar20 != gvar4 { + goto LABEL11 + } + gvar21 = gvar6 + goto LABEL12 +LABEL11: + gvar21 = gvar4 +LABEL12: + gvar20 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp9[3]) + v1[1] = ns.CreateObject("MediumFlame", wp11[3]) + v1[2] = ns.CreateObject("MediumFlame", wp12[3]) + v1[3] = ns.CreateObject("MediumFlame", wp13[3]) + if gvar20 != gvar5 { + goto LABEL15 + } + gvar21 = gvar7 + goto LABEL16 +LABEL15: + gvar21 = gvar5 +LABEL16: + gvar20 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp9[3]) + v1[1] = ns.CreateObject("Flame", wp11[3]) + v1[2] = ns.CreateObject("Flame", wp12[3]) + v1[3] = ns.CreateObject("Flame", wp13[3]) + if gvar20 != gvar6 { + goto LABEL19 + } + gvar21 = gvar8 + goto LABEL20 +LABEL19: + gvar21 = gvar6 +LABEL20: + gvar20 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp9[3]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp9[3]) + v1[1] = ns.CreateObject("LargeFlame", wp11[3]) + v1[2] = ns.CreateObject("LargeFlame", wp12[3]) + v1[3] = ns.CreateObject("LargeFlame", wp13[3]) + gvar21 = gvar7 + gvar20 = gvar8 + goto LABEL6 +LABEL6: + if gvar20 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame3) +LABEL23: + return +} +func Flame4() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar23 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar23 = gvar5 + gvar22 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp9[4]) + v1[1] = ns.CreateObject("SmallFlame", wp11[4]) + v1[2] = ns.CreateObject("SmallFlame", wp12[4]) + v1[3] = ns.CreateObject("SmallFlame", wp13[4]) + if gvar22 != gvar4 { + goto LABEL11 + } + gvar23 = gvar6 + goto LABEL12 +LABEL11: + gvar23 = gvar4 +LABEL12: + gvar22 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp9[4]) + v1[1] = ns.CreateObject("MediumFlame", wp11[4]) + v1[2] = ns.CreateObject("MediumFlame", wp12[4]) + v1[3] = ns.CreateObject("MediumFlame", wp13[4]) + if gvar22 != gvar5 { + goto LABEL15 + } + gvar23 = gvar7 + goto LABEL16 +LABEL15: + gvar23 = gvar5 +LABEL16: + gvar22 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp9[4]) + v1[1] = ns.CreateObject("Flame", wp11[4]) + v1[2] = ns.CreateObject("Flame", wp12[4]) + v1[3] = ns.CreateObject("Flame", wp13[4]) + if gvar22 != gvar6 { + goto LABEL19 + } + gvar23 = gvar8 + goto LABEL20 +LABEL19: + gvar23 = gvar6 +LABEL20: + gvar22 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp9[4]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp9[4]) + v1[1] = ns.CreateObject("LargeFlame", wp11[4]) + v1[2] = ns.CreateObject("LargeFlame", wp12[4]) + v1[3] = ns.CreateObject("LargeFlame", wp13[4]) + gvar23 = gvar7 + gvar22 = gvar8 + goto LABEL6 +LABEL6: + if gvar22 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame4) +LABEL23: + return +} +func Flame5() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar25 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar25 = gvar5 + gvar24 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp10[0]) + v1[1] = ns.CreateObject("SmallFlame", wp11[5]) + v1[2] = ns.CreateObject("SmallFlame", wp12[5]) + v1[3] = ns.CreateObject("SmallFlame", wp13[5]) + if gvar24 != gvar4 { + goto LABEL11 + } + gvar25 = gvar6 + goto LABEL12 +LABEL11: + gvar25 = gvar4 +LABEL12: + gvar24 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp10[0]) + v1[1] = ns.CreateObject("MediumFlame", wp11[5]) + v1[2] = ns.CreateObject("MediumFlame", wp12[5]) + v1[3] = ns.CreateObject("MediumFlame", wp13[5]) + if gvar24 != gvar5 { + goto LABEL15 + } + gvar25 = gvar7 + goto LABEL16 +LABEL15: + gvar25 = gvar5 +LABEL16: + gvar24 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp10[0]) + v1[1] = ns.CreateObject("Flame", wp11[5]) + v1[2] = ns.CreateObject("Flame", wp12[5]) + v1[3] = ns.CreateObject("Flame", wp13[5]) + if gvar24 != gvar6 { + goto LABEL19 + } + gvar25 = gvar8 + goto LABEL20 +LABEL19: + gvar25 = gvar6 +LABEL20: + gvar24 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp10[0]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp10[0]) + v1[1] = ns.CreateObject("LargeFlame", wp11[5]) + v1[2] = ns.CreateObject("LargeFlame", wp12[5]) + v1[3] = ns.CreateObject("LargeFlame", wp13[5]) + gvar25 = gvar7 + gvar24 = gvar8 + goto LABEL6 +LABEL6: + if gvar24 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame5) +LABEL23: + return +} +func Flame6() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar27 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar27 = gvar5 + gvar26 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp10[1]) + v1[1] = ns.CreateObject("SmallFlame", wp11[6]) + v1[2] = ns.CreateObject("SmallFlame", wp12[6]) + v1[3] = ns.CreateObject("SmallFlame", wp13[6]) + if gvar26 != gvar4 { + goto LABEL11 + } + gvar27 = gvar6 + goto LABEL12 +LABEL11: + gvar27 = gvar4 +LABEL12: + gvar26 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp10[1]) + v1[1] = ns.CreateObject("MediumFlame", wp11[6]) + v1[2] = ns.CreateObject("MediumFlame", wp12[6]) + v1[3] = ns.CreateObject("MediumFlame", wp13[6]) + if gvar26 != gvar5 { + goto LABEL15 + } + gvar27 = gvar7 + goto LABEL16 +LABEL15: + gvar27 = gvar5 +LABEL16: + gvar26 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp10[1]) + v1[1] = ns.CreateObject("Flame", wp11[6]) + v1[2] = ns.CreateObject("Flame", wp12[6]) + v1[3] = ns.CreateObject("Flame", wp13[6]) + if gvar26 != gvar6 { + goto LABEL19 + } + gvar27 = gvar8 + goto LABEL20 +LABEL19: + gvar27 = gvar6 +LABEL20: + gvar26 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp10[1]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp10[1]) + v1[1] = ns.CreateObject("LargeFlame", wp11[6]) + v1[2] = ns.CreateObject("LargeFlame", wp12[6]) + v1[3] = ns.CreateObject("LargeFlame", wp13[6]) + gvar27 = gvar7 + gvar26 = gvar8 + goto LABEL6 +LABEL6: + if gvar26 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame6) +LABEL23: + return +} +func Flame7() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar29 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar29 = gvar5 + gvar28 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp10[2]) + v1[1] = ns.CreateObject("SmallFlame", wp11[7]) + v1[2] = ns.CreateObject("SmallFlame", wp12[7]) + v1[3] = ns.CreateObject("SmallFlame", wp13[7]) + if gvar28 != gvar4 { + goto LABEL11 + } + gvar29 = gvar6 + goto LABEL12 +LABEL11: + gvar29 = gvar4 +LABEL12: + gvar28 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp10[2]) + v1[1] = ns.CreateObject("MediumFlame", wp11[7]) + v1[2] = ns.CreateObject("MediumFlame", wp12[7]) + v1[3] = ns.CreateObject("MediumFlame", wp13[7]) + if gvar28 != gvar5 { + goto LABEL15 + } + gvar29 = gvar7 + goto LABEL16 +LABEL15: + gvar29 = gvar5 +LABEL16: + gvar28 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp10[2]) + v1[1] = ns.CreateObject("Flame", wp11[7]) + v1[2] = ns.CreateObject("Flame", wp12[7]) + v1[3] = ns.CreateObject("Flame", wp13[7]) + if gvar28 != gvar6 { + goto LABEL19 + } + gvar29 = gvar8 + goto LABEL20 +LABEL19: + gvar29 = gvar6 +LABEL20: + gvar28 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp10[2]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp10[2]) + v1[1] = ns.CreateObject("LargeFlame", wp11[7]) + v1[2] = ns.CreateObject("LargeFlame", wp12[7]) + v1[3] = ns.CreateObject("LargeFlame", wp13[7]) + gvar29 = gvar7 + gvar28 = gvar8 + goto LABEL6 +LABEL6: + if gvar28 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame7) +LABEL23: + return +} +func Flame8() { + var ( + v0 int + v1 [4]ns.ObjectID + v2 int + ) + v2 = gvar31 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL7: + gvar31 = gvar5 + gvar30 = gvar4 + goto LABEL6 +LABEL2: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL9 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL9: + v1[0] = ns.CreateObject("SmallFlame", wp10[3]) + v1[1] = ns.CreateObject("SmallFlame", wp11[8]) + v1[2] = ns.CreateObject("SmallFlame", wp12[8]) + v1[3] = ns.CreateObject("SmallFlame", wp13[8]) + if gvar30 != gvar4 { + goto LABEL11 + } + gvar31 = gvar6 + goto LABEL12 +LABEL11: + gvar31 = gvar4 +LABEL12: + gvar30 = gvar5 + goto LABEL6 +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL13 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL13: + v1[0] = ns.CreateObject("MediumFlame", wp10[3]) + v1[1] = ns.CreateObject("MediumFlame", wp11[8]) + v1[2] = ns.CreateObject("MediumFlame", wp12[8]) + v1[3] = ns.CreateObject("MediumFlame", wp13[8]) + if gvar30 != gvar5 { + goto LABEL15 + } + gvar31 = gvar7 + goto LABEL16 +LABEL15: + gvar31 = gvar5 +LABEL16: + gvar30 = gvar6 + goto LABEL6 +LABEL4: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL17 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL17: + v1[0] = ns.CreateObject("Flame", wp10[3]) + v1[1] = ns.CreateObject("Flame", wp11[8]) + v1[2] = ns.CreateObject("Flame", wp12[8]) + v1[3] = ns.CreateObject("Flame", wp13[8]) + if gvar30 != gvar6 { + goto LABEL19 + } + gvar31 = gvar8 + goto LABEL20 +LABEL19: + gvar31 = gvar6 +LABEL20: + gvar30 = gvar7 + goto LABEL6 +LABEL5: + ns.AudioEvent(ns.DemonBreath, wp10[3]) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL21 + } + ns.Delete(v1[v0]) + v0 += 1 + } +LABEL21: + v1[0] = ns.CreateObject("LargeFlame", wp10[3]) + v1[1] = ns.CreateObject("LargeFlame", wp11[8]) + v1[2] = ns.CreateObject("LargeFlame", wp12[8]) + v1[3] = ns.CreateObject("LargeFlame", wp13[8]) + gvar31 = gvar7 + gvar30 = gvar8 + goto LABEL6 +LABEL6: + if gvar30 == gvar4 { + goto LABEL23 + } + ns.FrameTimer(2, Flame8) +LABEL23: + return +} +func LightTrigger0() { + ns.ObjectOff(obj60) + ns.ObjectOn(obj56) + ns.ObjectOn(obj52) + ns.ObjectOff(obj44) + ns.ObjectOn(obj48) +} +func LightTrigger1() { + ns.ObjectOff(obj61) + ns.ObjectOn(obj57) + ns.ObjectOn(obj53) + ns.ObjectOff(obj45) + ns.ObjectOn(obj49) +} +func LightTrigger2() { + ns.ObjectOff(obj62) + ns.ObjectOn(obj58) + ns.ObjectOn(obj54) + ns.ObjectOff(obj46) + ns.ObjectOn(obj50) +} +func LightTrigger3() { + ns.ObjectOff(obj63) + ns.ObjectOn(obj59) + ns.ObjectOn(obj55) + ns.ObjectOff(obj47) + ns.ObjectOn(obj51) +} +func LightTrigger0b() { + ns.CreateObject("RedPotion", wp72) + ns.ObjectOn(obj60) + ns.ObjectOff(obj56) + ns.ObjectOff(obj52) + ns.ObjectOn(obj44) + ns.ObjectOff(obj48) +} +func LightTrigger1b() { + ns.CreateObject("RedPotion", wp73) + ns.ObjectOn(obj61) + ns.ObjectOff(obj57) + ns.ObjectOff(obj53) + ns.ObjectOn(obj45) + ns.ObjectOff(obj49) +} +func LightTrigger2b() { + ns.CreateObject("RedPotion", wp74) + ns.ObjectOn(obj62) + ns.ObjectOff(obj58) + ns.ObjectOff(obj54) + ns.ObjectOn(obj46) + ns.ObjectOff(obj50) +} +func LightTrigger3b() { + ns.CreateObject("RedPotion", wp75) + ns.ObjectOn(obj63) + ns.ObjectOff(obj59) + ns.ObjectOff(obj55) + ns.ObjectOn(obj47) + ns.ObjectOff(obj51) +} +func DemonCreate(a1 int) { + ivar37 += 1 + checkTotalDead() + if !(ivar37 < 5) { + goto LABEL1 + } + if gvar41 != 0 { + goto LABEL1 + } + ivar38 = ns.Random(1, 100) + if !(ivar38 <= 25 && gvar42 == 0) { + goto LABEL2 + } + gvar42 = 1 + obj66[a1] = ns.CreateObject("Demon", wp10[a1]) + ns.SetCallback(obj66[a1], 5, DemonDie) + goto LABEL3 +LABEL2: + obj66[a1] = ns.CreateObject("EmberDemon", wp10[a1]) + ns.SetCallback(obj66[a1], 5, EmberDie) +LABEL3: + ns.RetreatLevel(obj66[a1], 0) + ns.SetCallback(obj66[a1], 4, DemonIdle) + ns.SetCallback(obj66[a1], 4, DemonIdle) + ns.LookAtObject(obj66[a1], ns.GetHost()) + ns.FrameTimerWithArg(5, a1, DemonInit) +LABEL1: + return +} +func DemonInit(a1 int) { + ns.SetCallback(obj66[a1], 4, DemonIdle) + ns.LookAtObject(obj66[a1], ns.GetHost()) + ns.AggressionLevel(obj66[a1], 0.83) + ns.Wander(obj66[a1]) +} +func DemonIdle() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.Wander(ns.GetTrigger()) +} +func DemonDie() { + gvar42 = 0 + if ivar39 != 0 { + goto LABEL1 + } + ivar39 += 1 + ns.FrameTimer(590, Flame6) + ns.FrameTimerWithArg(600, ivar39, DemonCreate) + goto LABEL2 +LABEL1: + if ivar39 != 1 { + goto LABEL3 + } + ivar39 += 1 + ns.FrameTimer(590, Flame7) + ns.FrameTimerWithArg(600, ivar39, DemonCreate) + goto LABEL2 +LABEL3: + if ivar39 != 2 { + goto LABEL4 + } + ivar39 += 1 + ns.FrameTimer(590, Flame8) + ns.FrameTimerWithArg(600, ivar39, DemonCreate) + goto LABEL2 +LABEL4: + if ivar39 != 3 { + goto LABEL2 + } + ivar39 = 0 + ns.FrameTimer(590, Flame5) + ns.FrameTimerWithArg(600, ivar39, DemonCreate) +LABEL2: + return +} +func EmberDie() { + if ivar39 != 0 { + goto LABEL1 + } + ivar39 += 1 + ns.FrameTimer(590, Flame6) + ns.FrameTimerWithArg(600, ivar39, DemonCreate) + goto LABEL2 +LABEL1: + if ivar39 != 1 { + goto LABEL3 + } + ivar39 += 1 + ns.FrameTimer(590, Flame7) + ns.FrameTimerWithArg(600, ivar39, DemonCreate) + goto LABEL2 +LABEL3: + if ivar39 != 2 { + goto LABEL4 + } + ivar39 += 1 + ns.FrameTimer(590, Flame8) + ns.FrameTimerWithArg(600, ivar39, DemonCreate) + goto LABEL2 +LABEL4: + if ivar39 != 3 { + goto LABEL2 + } + ivar39 = 0 + ns.FrameTimer(590, Flame5) + ns.FrameTimerWithArg(600, ivar39, DemonCreate) +LABEL2: + return +} +func SetupGuards() { + ivar40 = 0 + for { + if !(ivar40 < 5) { + goto LABEL1 + } + if ivar40 != 4 { + goto LABEL2 + } + Flame4() + LABEL2: + obj67[ivar40] = ns.CreateObject("EmberDemon", wp9[ivar40]) + ns.RetreatLevel(obj67[ivar40], 0) + ns.CreatureGuard(obj67[ivar40], ns.GetWaypointX(wp9[ivar40]), ns.GetWaypointY(wp9[ivar40]), 2900, 2900, 300) + ns.LookAtObject(obj67[ivar40], ns.GetHost()) + ns.FrameTimerWithArg(2, ivar40, GuardInit) + ivar40 += 1 + } +LABEL1: + ns.SetCallback(obj67[0], 5, Guard0Die) + ns.SetCallback(obj67[1], 5, Guard1Die) + ns.SetCallback(obj67[2], 5, Guard2Die) + ns.SetCallback(obj67[3], 5, Guard3Die) + ns.SetCallback(obj67[4], 5, Guard4Die) +} +func Guard0Die() { + ns.FrameTimer(590, Flame0) + ns.FrameTimerWithArg(600, nil, GuardCreate) +} +func Guard1Die() { + ns.FrameTimer(590, Flame1) + ns.FrameTimerWithArg(600, 1, GuardCreate) +} +func Guard2Die() { + ns.FrameTimer(590, Flame2) + ns.FrameTimerWithArg(600, 2, GuardCreate) +} +func Guard3Die() { + ns.FrameTimer(590, Flame3) + ns.FrameTimerWithArg(600, 3, GuardCreate) +} +func Guard4Die() { + ns.FrameTimer(590, Flame4) + ns.FrameTimerWithArg(600, 4, GuardCreate) +} +func GuardCreate(a1 int) { + ivar36 += 1 + checkTotalDead() + if !(ivar36 < 5) { + goto LABEL1 + } + if gvar41 != 0 { + goto LABEL1 + } + obj67[a1] = ns.CreateObject("EmberDemon", wp9[a1]) + ns.RetreatLevel(obj67[a1], 0) + ns.CreatureGuard(obj67[a1], ns.GetWaypointX(wp9[a1]), ns.GetWaypointY(wp9[a1]), 2900, 2900, 300) + ns.LookAtObject(obj67[a1], ns.GetHost()) + if a1 != 0 { + goto LABEL2 + } + ns.SetCallback(obj67[0], 5, Guard0Die) +LABEL2: + if a1 != 1 { + goto LABEL3 + } + ns.SetCallback(obj67[1], 5, Guard1Die) +LABEL3: + if a1 != 2 { + goto LABEL4 + } + ns.SetCallback(obj67[2], 5, Guard2Die) +LABEL4: + if a1 != 3 { + goto LABEL5 + } + ns.SetCallback(obj67[3], 5, Guard3Die) +LABEL5: + if a1 != 4 { + goto LABEL6 + } + ns.SetCallback(obj67[4], 5, Guard4Die) +LABEL6: + ns.FrameTimerWithArg(2, a1, GuardInit) +LABEL1: + return +} +func GuardInit(a1 int) { + ns.CreatureGuard(obj67[a1], ns.GetWaypointX(wp9[a1]), ns.GetWaypointY(wp9[a1]), 2900, 2900, 300) + ns.LookAtObject(obj67[a1], ns.GetHost()) +} +func SetupDemons() { + if !(ivar39 < 4) { + goto LABEL1 + } + ns.MoveObject(obj66[ivar39], ns.GetWaypointX(wp68[ivar39]), ns.GetWaypointY(wp68[ivar39])) + ivar39 += 1 + ns.FrameTimer(30, SetupDemons) +LABEL1: + return +} +func SetupFight() { + ns.WideScreen(true) + ns.LookAtObject(ns.GetHost(), obj64) + ns.LookAtObject(obj64, ns.GetHost()) + ns.FrameTimer(50, HecTalk1) +} +func StartFight() { + ns.WideScreen(false) + ns.AggressionLevel(obj64, 0.83) + ns.CreatureHunt(obj64) + ns.Frozen(ns.GetHost(), false) + ns.FrameTimer(40, EnableDemons) +} +func HecTalk1() { + ns.Enchant(obj64, ns.ENCHANT_PROTECT_FROM_FIRE, 0) + ns.StoryPic(obj64, "HecubahPic") + ns.SetDialog(obj64, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj64, ns.GetHost()) +} +func HecTalk2() { + gvar43 = 2 + ns.SetDialog(obj64, ns.NORMAL, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj64, ns.GetHost()) +} +func hecTalkDemonStart() { + if !flag33 { + goto LABEL1 + } + ns.Chat(obj64, "War11a:Bah") + ns.FrameTimer(60, hecTalkDemonEnd) +LABEL1: + return +} +func hecTalkDemonEnd() { + flag32 = true +} +func hecTaunts() { + if !flag32 { + goto LABEL1 + } + flag32 = false + ns.Chat(obj64, "War11a:HecubahTaunts") + ns.FrameTimer(600, resetTaunts) +LABEL1: + return +} +func resetTaunts() { + flag32 = true +} +func hecRetreatTalk() { + if !ns.IsVisibleTo(ns.GetHost(), obj64) { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.SetDialog(obj64, ns.NORMAL, hecTalkRetreatStart, hecTalkRetreatEnd) + ns.StartDialog(obj64, ns.GetHost()) +LABEL1: + return +} +func hecTalkRetreatStart() { + ns.WideScreen(true) + ns.Frozen(obj64, true) + ns.Frozen(obj66[0], true) + ns.Frozen(obj66[1], true) + ns.Frozen(obj66[2], true) + ns.Frozen(obj66[3], true) + ns.Frozen(obj67[0], true) + ns.Frozen(obj67[1], true) + ns.Frozen(obj67[2], true) + ns.Frozen(obj67[3], true) + ns.Frozen(obj67[4], true) + ns.TellStory(ns.HecubahRecognize, "War11a:HecubahIntro") +} +func hecTalkRetreatEnd() { + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj64, false) + ns.Frozen(obj66[0], false) + ns.Frozen(obj66[1], false) + ns.Frozen(obj66[2], false) + ns.Frozen(obj66[3], false) + ns.Frozen(obj67[0], false) + ns.Frozen(obj67[1], false) + ns.Frozen(obj67[2], false) + ns.Frozen(obj67[3], false) + ns.Frozen(obj67[4], false) + ns.CancelDialog(obj64) +} +func checkTotalDead() { + if !(ivar37 >= 8 && ivar36 >= 9) { + goto LABEL1 + } + hecTalkDemonStart() +LABEL1: + return +} +func EnableDemons() { + SetupGuards() + ivar39 = 0 + for { + if !(ivar39 < 4) { + goto LABEL1 + } + ns.ObjectOn(obj66[ivar39]) + ns.RetreatLevel(obj66[ivar39], 0) + if ivar39 == 2 { + goto LABEL2 + } + ns.SetCallback(obj66[ivar39], 5, EmberDie) + LABEL2: + ns.SetCallback(obj66[ivar39], 4, DemonIdle) + ivar39 += 1 + } +LABEL1: + return +} +func EndScene() { + ns.Music(25, 100) + ns.UnBlind() + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp71), ns.GetWaypointY(wp71)) + ns.LookAtObject(ns.GetHost(), obj65) + ns.Frozen(ns.GetHost(), false) + ns.FrameTimer(2, EndScene2) +} +func EndScene2() { + ns.LookAtObject(ns.GetHost(), obj65) + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj65, true) + gvar43 = 3 + HecubahDies() + ns.SetDialog(obj64, ns.NORMAL, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj64, ns.GetHost()) +} +func EndScene3() { + ns.EndGame(0) +} +func HecubahDies() { + ns.Frozen(obj65, false) + ns.ObjectOn(obj65) + ns.Damage(obj65, 0, 5000, 0) + fvar34 = ns.GetObjectX(obj65) + fvar35 = ns.GetObjectY(obj65) + ns.MoveWaypoint(wp70, fvar34, fvar35) + ns.Music(0, 100) + ns.AudioEvent(ns.HecubahDieFrame0A, wp70) + ns.FrameTimer(66, HecubahDie1) + ns.FrameTimer(130, HecubahDie2) + ns.FrameTimer(170, HecubahDie3) + ns.FrameTimer(280, HecubahDie4) +} +func HecubahDie1() { + ns.AudioEvent(ns.HecubahDieFrame98, wp70) +} +func HecubahDie2() { + ns.AudioEvent(ns.HecubahDieFrame194, wp70) +} +func HecubahDie3() { + ns.AudioEvent(ns.HecubahDieFrame283, wp70) +} +func HecubahDie4() { + ns.AudioEvent(ns.HecubahDieFrame439, wp70) +} +func HecubahDie5() { + ns.Blind() + ns.FrameTimer(100, EndScene3) +} +func HecubahDialogStart() { + if gvar43 != 1 { + goto LABEL1 + } + ns.TellStory(ns.DemonRecognize, "War11a:PunyFlea") +LABEL1: + if gvar43 != 2 { + goto LABEL2 + } + ns.TellStory(ns.DemonRecognize, "War11a:CatchMe") +LABEL2: + if gvar43 != 3 { + goto LABEL3 + } + ns.TellStory(ns.DemonRecognize, "War11a:Nooooooooo") +LABEL3: + return +} +func HecubahDialogEnd() { + if gvar43 != 1 { + goto LABEL1 + } + ns.CancelDialog(obj64) + SetupDemons() + ns.FrameTimer(150, HecTalk2) +LABEL1: + if gvar43 != 2 { + goto LABEL2 + } + ns.CancelDialog(obj64) + ns.Move(obj64, wp69) +LABEL2: + if gvar43 != 3 { + goto LABEL3 + } + ns.CancelDialog(obj64) + HecubahDie5() +LABEL3: + return +} +func MapInitialize() { + ns.Music(24, 100) + obj64 = ns.Object("Hecubah") + obj65 = ns.Object("Hecubah2") + obj44 = ns.Object("LightTrigger0") + obj45 = ns.Object("LightTrigger1") + obj46 = ns.Object("LightTrigger2") + obj47 = ns.Object("LightTrigger3") + obj48 = ns.Object("LightTrigger0b") + obj49 = ns.Object("LightTrigger1b") + obj50 = ns.Object("LightTrigger2b") + obj51 = ns.Object("LightTrigger3b") + obj52 = ns.Object("InnerLight0") + obj53 = ns.Object("InnerLight1") + obj54 = ns.Object("InnerLight2") + obj55 = ns.Object("InnerLight3") + obj56 = ns.Object("MiddleLight0") + obj57 = ns.Object("MiddleLight1") + obj58 = ns.Object("MiddleLight2") + obj59 = ns.Object("MiddleLight3") + obj60 = ns.Object("OuterLight0") + obj61 = ns.Object("OuterLight1") + obj62 = ns.Object("OuterLight2") + obj63 = ns.Object("OuterLight3") + obj66[0] = ns.Object("Demon0") + obj66[1] = ns.Object("Demon1") + obj66[2] = ns.Object("Demon2") + obj66[3] = ns.Object("Demon3") + obj67[0] = ns.Object("Guard0") + obj67[1] = ns.Object("Guard1") + obj67[2] = ns.Object("Guard2") + obj67[3] = ns.Object("Guard3") + obj67[4] = ns.Object("Guard4") + wp69 = ns.Waypoint("HecRun1") + wp70 = ns.Waypoint("HecubahWP") + wp71 = ns.Waypoint("EndPlayer") + wp68[0] = ns.Waypoint("DemonStart0") + wp68[1] = ns.Waypoint("DemonStart1") + wp68[2] = ns.Waypoint("DemonStart2") + wp68[3] = ns.Waypoint("DemonStart3") + wp10[0] = ns.Waypoint("Loc0") + wp10[1] = ns.Waypoint("Loc1") + wp10[2] = ns.Waypoint("Loc2") + wp10[3] = ns.Waypoint("Loc3") + wp9[0] = ns.Waypoint("GuardLoc0") + wp9[1] = ns.Waypoint("GuardLoc1") + wp9[2] = ns.Waypoint("GuardLoc2") + wp9[3] = ns.Waypoint("GuardLoc3") + wp9[4] = ns.Waypoint("GuardLoc4") + wp72 = ns.Waypoint("PotionLoc0") + wp73 = ns.Waypoint("PotionLoc1") + wp74 = ns.Waypoint("PotionLoc2") + wp75 = ns.Waypoint("PotionLoc3") + wp11[0] = ns.Waypoint("FireLocA0") + wp11[1] = ns.Waypoint("FireLocA1") + wp11[2] = ns.Waypoint("FireLocA2") + wp11[3] = ns.Waypoint("FireLocA3") + wp11[4] = ns.Waypoint("FireLocA4") + wp11[5] = ns.Waypoint("FireLocA5") + wp11[6] = ns.Waypoint("FireLocA6") + wp11[7] = ns.Waypoint("FireLocA7") + wp11[8] = ns.Waypoint("FireLocA8") + wp12[0] = ns.Waypoint("FireLocB0") + wp12[1] = ns.Waypoint("FireLocB1") + wp12[2] = ns.Waypoint("FireLocB2") + wp12[3] = ns.Waypoint("FireLocB3") + wp12[4] = ns.Waypoint("FireLocB4") + wp12[5] = ns.Waypoint("FireLocB5") + wp12[6] = ns.Waypoint("FireLocB6") + wp12[7] = ns.Waypoint("FireLocB7") + wp12[8] = ns.Waypoint("FireLocB8") + wp13[0] = ns.Waypoint("FireLocC0") + wp13[1] = ns.Waypoint("FireLocC1") + wp13[2] = ns.Waypoint("FireLocC2") + wp13[3] = ns.Waypoint("FireLocC3") + wp13[4] = ns.Waypoint("FireLocC4") + wp13[5] = ns.Waypoint("FireLocC5") + wp13[6] = ns.Waypoint("FireLocC6") + wp13[7] = ns.Waypoint("FireLocC7") + wp13[8] = ns.Waypoint("FireLocC8") + ns.StartupScreen(11) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(2, SetupFight) +} +func HecubahDie() { + gvar41 = 1 + flag33 = false + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.ObjectOff(obj64) + ns.DestroyEveryChat() + ns.CancelDialog(obj64) + ivar40 = 0 + for { + if !(ivar40 < 5) { + goto LABEL1 + } + ns.Damage(obj67[ivar40], 0, 1000, 0) + ivar40 += 1 + } +LABEL1: + ivar39 = 0 + for { + if !(ivar39 < 4) { + goto LABEL3 + } + ns.Damage(obj66[ivar39], 0, 1000, 0) + ivar39 += 1 + } +LABEL3: + ns.Blind() + ns.FrameTimer(100, EndScene) +} +func killHecubah() { + ns.Damage(obj64, 0, 5000, 0) +} +func PlayerDeath() { + ns.DeathScreen(11) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz01a/dummy_test.go b/examples/wiz01a/dummy_test.go new file mode 100644 index 0000000..253b45b --- /dev/null +++ b/examples/wiz01a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz01a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz01a/wiz01a.go b/examples/wiz01a/wiz01a.go new file mode 100644 index 0000000..8b6befe --- /dev/null +++ b/examples/wiz01a/wiz01a.go @@ -0,0 +1,815 @@ +package wiz01a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + gvar23 ns.ObjectGroupID + gvar24 ns.ObjectGroupID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.ObjectGroupID + gvar28 ns.ObjectGroupID + gvar29 ns.ObjectGroupID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + gvar44 ns.WallGroupID + wp45 ns.WaypointID + wp46 ns.WaypointID + flag47 bool + flag48 bool + flag49 bool + flag50 bool + flag51 bool + obj52 ns.ObjectID + gvar53 int + gvar54 int + gvar55 int + gvar56 int + gvar57 int + gvar58 int + gvar59 int + gvar60 int + gvar61 int + gvar62 int + gvar63 int + ivar64 int + ivar65 int + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + flag78 bool + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + flag86 bool +) + +func init() { + flag47 = false + flag48 = false + flag49 = false + flag50 = false + flag51 = false + gvar53 = 0 + gvar54 = 1 + gvar55 = 2 + gvar56 = 3 + gvar57 = 4 + gvar58 = 5 + gvar59 = 6 + gvar60 = gvar53 + gvar61 = 0 + gvar62 = 0 + gvar63 = 0 + flag78 = false + ivar64 = 0 + ivar65 = 12 + flag86 = false +} +func InitializeDialogs() { + ns.SetDialog(obj4, ns.NORMAL, JandorIntroStart, JandorIntroEnd) +} +func OwnObjects() { + ns.SetOwner(ns.GetHost(), obj4) + ns.SetOwner(ns.GetHost(), obj6) + ns.SetOwner(ns.GetHost(), obj8) + ns.SetOwner(ns.GetHost(), obj9) + ns.JournalEntry(ns.GetHost(), "FindHorvath", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.Music(21, 100) + ns.SetDialog(obj4, ns.NORMAL, JandorIntroStart, JandorIntroEnd) + ns.StartDialog(obj4, ns.GetHost()) +} +func OpenSecretWalls() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar44) +} +func MirrorText() { + ns.PrintToAll("Wiz01A.scr:Mirror") +} +func MovingToLab() { + if !ns.IsCaller(obj5) { + goto LABEL1 + } + if !flag48 { + goto LABEL1 + } + ns.UnlockDoor(obj17) + ns.UnlockDoor(obj18) + ns.Walk(obj5, 2467, 2815) +LABEL1: + return +} +func FirstSecret() { + ns.ObjectGroupOff(gvar27) + ns.MoveWaypoint(wp41, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp41) + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func BeachSecret2() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp41, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp41) + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func CaveSecret() { + ns.ObjectGroupOff(gvar28) + ns.MoveWaypoint(wp41, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp41) + ns.GiveXp(ns.GetHost(), 75) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func RiverSecret() { + ns.ObjectGroupOff(gvar29) + ns.MoveWaypoint(wp41, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp41) + ns.GiveXp(ns.GetHost(), 30) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func JandorIntroStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz01A.scr:JandorTalk01") +} +func JandorIntroEnd() { + ns.SetDialog(obj4, ns.NORMAL, JandorDoneStart, JandorDoneEnd) +} +func ApprenticeStart() { + ns.Damage(obj7, 0, 500, 0) + ns.TellStory(ns.HumanMaleEatFood, "Wiz01:ApprenticeTalk01") +} +func ApprenticeEnd() { + ns.CancelDialog(obj6) + ns.FrameTimer(5, KillApprentice) +} +func KillApprentice() { + ns.MoveWaypoint(wp40, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.HumanMaleDie, wp40) + ns.MoveObject(obj7, ns.GetObjectX(obj6), ns.GetObjectY(obj6)) + ns.MoveObject(obj6, 4279, 5285) + ns.MoveObject(obj36, 3760, 4868) + ns.MoveObject(obj34, 3691, 4887) +} +func PlayerInRobeRoom() { + if !(!ns.IsLocked(obj19) || !ns.IsLocked(obj20)) { + goto LABEL1 + } + if flag49 { + goto LABEL1 + } + flag49 = true + ns.SetDialog(obj6, ns.NORMAL, ApprenticeStart, ApprenticeEnd) +LABEL1: + return +} +func StopSpawning() { + ns.CreatureGuard(obj5, ns.GetObjectX(obj5), ns.GetObjectY(obj5), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + gvar60 = gvar55 + SetHorvathDialog() +} +func ScriptInit() { + wp79 = ns.Waypoint("SP1WP") + wp80 = ns.Waypoint("SP2WP") + wp81 = ns.Waypoint("SP3WP") + wp82 = ns.Waypoint("SP4WP") + wp83 = ns.Waypoint("SP5WP") + wp84 = ns.Waypoint("SP6WP") + wp85 = ns.Waypoint("HorvathAttackWP") +} +func GoAway() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MapInitialize() { + obj4 = ns.Object("Airship_Captain") + obj5 = ns.Object("Horvath") + obj6 = ns.Object("HorvathApprentice") + obj7 = ns.Object("Apprentice2") + obj8 = ns.Object("Lance") + obj9 = ns.Object("TowerNPC") + obj10 = ns.Object("UrchinA") + obj11 = ns.Object("UrchinB") + obj12 = ns.Object("FinalUrchin1") + obj13 = ns.Object("FinalUrchin2") + obj14 = ns.Object("HorvathHomeDoor") + obj15 = ns.Object("HorvathGate1") + obj16 = ns.Object("HorvathGate2") + obj17 = ns.Object("LabDoor1") + obj18 = ns.Object("LabDoor2") + obj19 = ns.Object("RobeDoor1") + obj20 = ns.Object("RobeDoor2") + obj21 = ns.Object("FacadeGate") + obj22 = ns.Object("HorvathGiveStuffTrigger") + gvar23 = ns.ObjectGroup("UrchinCreateTriggers") + gvar24 = ns.ObjectGroup("FreezeTriggers") + gvar25 = ns.ObjectGroup("FinalTriggers") + gvar26 = ns.ObjectGroup("UrchinTriggers") + gvar27 = ns.ObjectGroup("FirstSecretTriggers") + gvar28 = ns.ObjectGroup("CaveTriggers") + gvar29 = ns.ObjectGroup("RiverTriggers") + obj30 = ns.Object("Crystal1") + obj31 = ns.Object("Heal1") + obj32 = ns.Object("Heal2") + obj33 = ns.Object("LesserHealBook") + obj34 = ns.Object("MagicMissileBook") + obj35 = ns.Object("HorvathStaff") + obj36 = ns.Object("HorvathRobe") + obj37 = ns.Object("Basket") + obj38 = ns.Object("BasketShadow") + obj39 = ns.Object("BriefTeleporter") + wp40 = ns.Waypoint("PlayerSounds") + wp41 = ns.Waypoint("SecretSounds") + wp42 = ns.Waypoint("HorvathMoveWP") + gvar44 = ns.WallGroup("SecretWalls") + wp45 = ns.Waypoint("HorvathTeleporterWP") + wp46 = ns.Waypoint("HorvathStorage") + wp43 = ns.Waypoint("BriefWP") + ns.LockDoor(obj15) + ns.LockDoor(obj16) + ns.LockDoor(obj17) + ns.LockDoor(obj18) + ns.LockDoor(obj21) + ns.StoryPic(obj4, "AirshipCaptainPic") + ns.StoryPic(obj5, "HorvathPic") + ns.StoryPic(obj6, "WoundedApprenticePic") + ns.StoryPic(obj8, "WizardGuard1Pic") + ns.StartupScreen(1) + ScriptInit() + ns.FrameTimer(1, OwnObjects) + ns.FrameTimer(1, StopSpawning) +} +func PlayerDeath() { + ns.DeathScreen(1) +} +func TeleportHorvath() { + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp43), ns.GetWaypointY(wp43)) +} +func HorvathGateDialogStart() { + ns.TellStory(ns.SwordsmanHurt, "Wiz02A.scr:Horvath1") +} +func HorvathGateDialogEnd() { + ns.AudioEvent(ns.TeleportOut, ns.Waypoint("FacadeAudioOrigin")) + ns.Effect(ns.TELEPORT, ns.GetObjectX(obj5), ns.GetObjectY(obj5), 0, 0) + ns.MoveObject(obj5, ns.GetWaypointX(wp46), ns.GetWaypointY(wp46)) + ns.Frozen(ns.GetHost(), false) + ns.JournalEntry(ns.GetHost(), "MeetHorvath", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +} +func LanceDialogStart() { + ns.TellStory(ns.SwordsmanHurt, "War01A.scr:Guard1Talk01") +} +func LanceDialogEnd() { +} +func HorvathSpeak() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp40, ns.GetWaypointX(wp43), ns.GetWaypointY(wp43)) + ns.AudioEvent(ns.TeleportIn, wp40) + ns.Effect(ns.TELEPORT, ns.GetWaypointX(wp43), ns.GetWaypointY(wp43), ns.GetWaypointX(wp43), ns.GetWaypointY(wp43)) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj9) + ns.MoveObject(obj5, ns.GetWaypointX(wp45), ns.GetWaypointY(wp45)) +} +func PlayerArrivesAtGate() { + ns.ObjectOff(ns.GetTrigger()) + ns.StartupScreen(2) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), ns.ObjectID(ns.Waypoint("FacadeAudioOrigin"))) // FIXME + ns.FrameTimer(1, TeleportHorvath) + ns.SetDialog(obj8, ns.NORMAL, LanceDialogStart, LanceDialogEnd) +} +func HorvathArrivesAtGate() { + ns.ObjectOff(ns.GetTrigger()) + ns.CreatureIdle(obj5) + ns.LookAtObject(obj5, ns.GetHost()) + ns.SetDialog(obj5, ns.NORMAL, HorvathGateDialogStart, HorvathGateDialogEnd) + ns.StartDialog(obj5, ns.GetHost()) +} +func SetHorvathDialog() { + var v0 int + v0 = gvar60 + if v0 == gvar55 { + goto LABEL1 + } + if v0 == gvar56 { + goto LABEL2 + } + if v0 == gvar57 { + goto LABEL3 + } + if v0 == gvar58 { + goto LABEL4 + } + if v0 == gvar59 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.SetDialog(obj5, ns.NORMAL, HorvathIntroStart, HorvathIntroEnd) + goto LABEL6 +LABEL2: + ns.SetDialog(obj5, ns.NEXT, HorvathBriefStart, HorvathBriefEnd) + goto LABEL6 +LABEL3: + ns.SetDialog(obj5, ns.NORMAL, HorvathWaitStart, HorvathWaitEnd) + goto LABEL6 +LABEL4: + ns.SetDialog(obj5, ns.NORMAL, HorvathWait2Start, HorvathWait2End) + goto LABEL6 +LABEL5: + ns.SetDialog(obj5, ns.NORMAL, HorvathLabStart, HorvathLabEnd) + goto LABEL6 +LABEL6: + return +} +func HorvathRecognize() { + if gvar60 != gvar53 { + goto LABEL1 + } + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + gvar60 = gvar54 + ns.ClearOwner(obj10) + ns.ClearOwner(obj11) + ns.ObjectOn(obj5) +LABEL1: + return +} +func HorvathIntroStart() { + ns.Frozen(obj5, true) + ns.CreatureIdle(obj5) + ns.LookAtObject(obj5, ns.GetHost()) + ns.AggressionLevel(obj5, 0.5) + ns.SetOwner(ns.GetHost(), obj5) + ns.TellStory(ns.HumanMaleEatFood, "Wiz01A.scr:HorvathTalk01") +} +func HorvathIntroEnd() { + ns.Frozen(obj5, false) + ns.CancelDialog(obj5) + ns.JournalEdit(ns.GetHost(), "FindHorvath", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.Move(obj5, wp42) +} +func HorvathBriefStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz01A.scr:HorvathTalk02") + ns.MoveWaypoint(wp40, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.LookAtObject(obj5, ns.GetHost()) +} +func HorvathBriefEnd() { + ns.Pickup(ns.GetHost(), obj30) + ns.Pickup(ns.GetHost(), obj31) + ns.Pickup(ns.GetHost(), obj32) + ns.Pickup(ns.GetHost(), obj33) + gvar60 = gvar58 + SetHorvathDialog() + ns.StartDialog(obj5, ns.GetHost()) +} +func HorvathWaitStart() { + if !ns.HasItem(ns.GetHost(), obj36) { + goto LABEL1 + } + ns.LookAtObject(obj5, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz01A.scr:HorvathTalk04") + flag48 = true + goto LABEL2 +LABEL1: + ns.LookAtObject(obj5, ns.GetHost()) + flag48 = false + ns.TellStory(ns.HumanMaleEatFood, "Wiz01A.scr:HorvathTalk03") +LABEL2: + return +} +func HorvathWaitEnd() { + if !flag48 { + goto LABEL1 + } + ns.Walk(obj5, 2633, 2934) + ns.GiveXp(ns.GetHost(), 500) + ns.JournalEdit(ns.GetHost(), "FindHorvathApprentice", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.CancelDialog(obj5) + goto LABEL2 +LABEL1: + ns.SetDialog(obj5, ns.NORMAL, HorvathWaitStart, HorvathWaitEnd) +LABEL2: + return +} +func HorvathWait2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz01A.scr:HorvathTalk02a") +} +func HorvathWait2End() { + ns.UnlockDoor(obj15) + ns.UnlockDoor(obj16) + gvar60 = gvar57 + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "FindHorvathApprentice", 2) + ns.LookAtObject(obj5, obj15) + ns.CreatureGuard(obj5, ns.GetObjectX(obj5), ns.GetObjectY(obj5), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + SetHorvathDialog() +} +func HorvathLabStart() { + ns.LookAtObject(obj5, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz01A.scr:HorvathTalk05") +} +func HorvathLabEnd() { + ns.SetDialog(obj5, ns.NORMAL, HorvathLabStart, HorvathLabEnd) +} +func HorvathGoHome() { + if !ns.IsCaller(obj5) { + goto LABEL1 + } + ns.Wander(obj5) +LABEL1: + return +} +func HorvathOpenHomeDoor() { + ns.UnlockDoor(obj14) +} +func HorvathAtGiveStuff() { + ns.CreatureGuard(obj5, ns.GetObjectX(obj5), ns.GetObjectY(obj5), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + gvar60 = gvar56 + ns.ObjectOff(obj22) + ns.LookAtObject(obj5, ns.GetHost()) + SetHorvathDialog() +} +func SayTeleportStuff() { + ns.CreatureGuard(obj5, 2501, 2865, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + gvar60 = gvar59 + SetHorvathDialog() +} +func HorvathFacePlayer() { + if flag48 { + goto LABEL1 + } + ns.LookAtObject(obj5, ns.GetHost()) + ns.FrameTimer(15, HorvathFacePlayer) +LABEL1: + return +} +func SPDie() { + ivar64 += 1 + if !(ivar64 >= ivar65) { + goto LABEL1 + } + ns.WideScreen(false) + ns.Frozen(obj5, true) + ns.FrameTimer(1, HorvathStop) +LABEL1: + if flag51 { + goto LABEL2 + } + flag51 = true + ns.SecondTimer(10, DoubleCheck) +LABEL2: + return +} +func HorvathStop() { + ns.Frozen(obj5, true) + ns.CreatureIdle(obj5) + ns.LookAtObject(obj5, ns.GetHost()) + ns.AggressionLevel(obj5, 0) + ns.FrameTimer(1, HorvathGuard) +} +func HorvathGuard() { + ns.Frozen(obj5, false) + ns.CreatureGuard(obj5, ns.GetObjectX(obj5), ns.GetObjectY(obj5), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + SetHorvathDialog() + ns.FrameTimer(15, HorvathHi) +} +func HorvathHi() { + ns.Frozen(ns.GetHost(), false) + ns.StartDialog(obj5, ns.GetHost()) +} +func SetHorvathLook() { + ns.CreatureGuard(obj5, ns.GetObjectX(obj5), ns.GetObjectY(obj5), ns.GetObjectX(obj15), ns.GetObjectY(obj15), 0) +} +func DoubleCheck() { + ns.Damage(obj66, 0, 50, 9) + ns.Damage(obj67, 0, 50, 9) + ns.Damage(obj68, 0, 50, 9) + ns.Damage(obj69, 0, 50, 9) + ns.Damage(obj70, 0, 50, 9) + ns.Damage(obj71, 0, 50, 9) + ns.Damage(obj72, 0, 50, 9) + ns.Damage(obj73, 0, 50, 9) + ns.Damage(obj74, 0, 50, 9) + ns.Damage(obj75, 0, 50, 9) + ns.Damage(obj76, 0, 50, 9) + ns.Damage(obj77, 0, 50, 9) +} +func JandorDoneStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz01A.scr:JandorTalk02") +} +func JandorDoneEnd() { + ns.SetDialog(obj4, ns.NORMAL, JandorDoneStart, JandorDoneEnd) +} +func DestroyCaptain() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectGroupOff(gvar23) + ns.Delete(obj4) + ns.Delete(obj37) + ns.Delete(obj38) +LABEL1: + return +} +func FinalUrchins() { + obj52 = ns.GetLastItem(ns.GetHost()) + for { + if obj52 == 0 { + goto LABEL1 + } + if obj52 != obj36 { + goto LABEL2 + } + flag48 = true + ns.ObjectGroupOff(gvar25) + ns.MoveObject(obj12, 3449, 2378) + ns.MoveObject(obj13, 3516, 2425) + ns.ObjectOn(obj12) + ns.ObjectOn(obj13) + goto LABEL1 + LABEL2: + obj52 = ns.GetPreviousItem(obj52) + } +LABEL1: + return +} +func HorrendousPainting() { + ns.PrintToAll("Wiz01A.scr:UrchinPainting01") +} +func UrchinPainting1() { + ns.PrintToAll("Wiz01A.scr:UrchinPainting2") +} +func UrchinPainting2() { + ns.PrintToAll("Wiz01A.scr:UrchinPainting3") +} +func UrchinAEnable() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(obj10, 0.83) +LABEL1: + return +} +func UrchinBEnable() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(obj11, 0.83) +LABEL1: + return +} +func UrchinAway() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func UrchinReport() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func DenReport() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func UrchinSetup() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if flag50 { + goto LABEL1 + } + ns.ObjectGroupOff(gvar26) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj68) + ns.WideScreen(true) + ns.ClearOwner(obj10) + ns.ClearOwner(obj11) + obj66 = ns.CreateObject("Urchin", wp79) + obj67 = ns.CreateObject("Urchin", wp80) + obj68 = ns.CreateObject("Urchin", wp81) + obj69 = ns.CreateObject("Urchin", wp82) + obj70 = ns.CreateObject("Urchin", wp83) + obj71 = ns.CreateObject("Urchin", wp84) + flag50 = true + ns.FrameTimer(1, UrchinBegin) +LABEL1: + return +} +func UrchinBegin() { + if !(ns.CurrentHealth(obj10) > 0) { + goto LABEL1 + } + ns.CreatureFollow(obj10, ns.GetHost()) +LABEL1: + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL2 + } + ns.CreatureFollow(obj11, ns.GetHost()) +LABEL2: + ns.SetCallback(obj66, 5, SPDie) + ns.SetCallback(obj67, 5, SPDie) + ns.SetCallback(obj68, 5, SPDie) + ns.SetCallback(obj69, 5, SPDie) + ns.SetCallback(obj70, 5, SPDie) + ns.SetCallback(obj71, 5, SPDie) + ns.SetCallback(obj66, 3, AttackHorvath) + ns.SetCallback(obj67, 3, AttackHorvath) + ns.SetCallback(obj68, 3, AttackHorvath) + ns.SetCallback(obj69, 3, AttackHorvath) + ns.SetCallback(obj70, 3, AttackHorvath) + ns.SetCallback(obj71, 3, AttackHorvath) + ns.AggressionLevel(obj66, 0) + ns.AggressionLevel(obj67, 0) + ns.AggressionLevel(obj68, 0) + ns.AggressionLevel(obj69, 0) + ns.AggressionLevel(obj70, 0) + ns.AggressionLevel(obj71, 0) + ns.CreatureFollow(obj66, ns.GetHost()) + ns.CreatureFollow(obj67, ns.GetHost()) + ns.CreatureFollow(obj68, ns.GetHost()) + ns.CreatureFollow(obj69, ns.GetHost()) + ns.CreatureFollow(obj70, ns.GetHost()) + ns.CreatureFollow(obj71, ns.GetHost()) + ns.RetreatLevel(obj66, 0) + ns.RetreatLevel(obj67, 0) + ns.RetreatLevel(obj68, 0) + ns.RetreatLevel(obj69, 0) + ns.RetreatLevel(obj70, 0) + ns.RetreatLevel(obj71, 0) + ns.SecondTimer(1, UrchinBegin2) +} +func UrchinBegin2() { + obj72 = ns.CreateObject("Urchin", wp79) + obj73 = ns.CreateObject("Urchin", wp80) + obj74 = ns.CreateObject("Urchin", wp81) + obj75 = ns.CreateObject("Urchin", wp82) + obj76 = ns.CreateObject("Urchin", wp83) + obj77 = ns.CreateObject("Urchin", wp84) + ns.FrameTimer(1, UrchinGroup2Go) +} +func UrchinGroup2Go() { + ns.SetCallback(obj72, 5, SPDie) + ns.SetCallback(obj73, 5, SPDie) + ns.SetCallback(obj74, 5, SPDie) + ns.SetCallback(obj75, 5, SPDie) + ns.SetCallback(obj76, 5, SPDie) + ns.SetCallback(obj77, 5, SPDie) + ns.SetCallback(obj72, 3, AttackHorvath) + ns.SetCallback(obj73, 3, AttackHorvath) + ns.SetCallback(obj74, 3, AttackHorvath) + ns.SetCallback(obj75, 3, AttackHorvath) + ns.SetCallback(obj76, 3, AttackHorvath) + ns.SetCallback(obj77, 3, AttackHorvath) + ns.AggressionLevel(obj72, 0) + ns.AggressionLevel(obj73, 0) + ns.AggressionLevel(obj74, 0) + ns.AggressionLevel(obj75, 0) + ns.AggressionLevel(obj76, 0) + ns.AggressionLevel(obj77, 0) + ns.CreatureFollow(obj72, obj66) + ns.CreatureFollow(obj73, obj67) + ns.CreatureFollow(obj74, obj68) + ns.CreatureFollow(obj75, obj69) + ns.CreatureFollow(obj76, obj70) + ns.CreatureFollow(obj77, obj71) + ns.RetreatLevel(obj72, 0) + ns.RetreatLevel(obj73, 0) + ns.RetreatLevel(obj74, 0) + ns.RetreatLevel(obj75, 0) + ns.RetreatLevel(obj76, 0) + ns.RetreatLevel(obj77, 0) + ns.SecondTimer(2, HorvathApproach) +} +func RenewAttack() { + ns.HitFarLocation(ns.GetTrigger(), ns.GetObjectX(obj5), ns.GetObjectY(obj5)) +} +func HorvathApproach() { + ns.Move(obj5, wp85) + if !(ns.CurrentHealth(obj10) > 0) { + goto LABEL1 + } + ns.AggressionLevel(obj10, 0) + ns.GoBackHome(obj10) +LABEL1: + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL2 + } + ns.AggressionLevel(obj11, 0) + ns.GoBackHome(obj11) +LABEL2: + ns.SetCallback(obj66, 11, RenewAttack) + ns.SetCallback(obj67, 11, RenewAttack) + ns.SetCallback(obj68, 11, RenewAttack) + ns.SetCallback(obj69, 11, RenewAttack) + ns.SetCallback(obj70, 11, RenewAttack) + ns.SetCallback(obj71, 11, RenewAttack) + ns.SetCallback(obj72, 11, RenewAttack) + ns.SetCallback(obj73, 11, RenewAttack) + ns.SetCallback(obj74, 11, RenewAttack) + ns.SetCallback(obj75, 11, RenewAttack) + ns.SetCallback(obj76, 11, RenewAttack) + ns.SetCallback(obj77, 11, RenewAttack) + ns.SecondTimer(3, StopTheSpawning) +} +func AttackHorvath() { + if !ns.IsCaller(obj5) { + goto LABEL1 + } + ns.HitFarLocation(ns.GetTrigger(), ns.GetObjectX(obj5), ns.GetObjectY(obj5)) +LABEL1: + return +} +func HorvathArrived() { + ns.AggressionLevel(obj5, 0.83) +} +func StopTheSpawning() { + flag86 = true +} +func UrchinSecret1() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp41, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp41) + ns.GiveXp(ns.GetHost(), 25) + ns.PrintToAll("GeneralPrint:SecretFound") +LABEL1: + return +} +func UrchinSecret2() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp41, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp41) + ns.GiveXp(ns.GetHost(), 25) + ns.PrintToAll("GeneralPrint:SecretFound") +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz02a/dummy_test.go b/examples/wiz02a/dummy_test.go new file mode 100644 index 0000000..e0ab54c --- /dev/null +++ b/examples/wiz02a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz02a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz02a/wiz02a.go b/examples/wiz02a/wiz02a.go new file mode 100644 index 0000000..12e6bbc --- /dev/null +++ b/examples/wiz02a/wiz02a.go @@ -0,0 +1,1058 @@ +package wiz02a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + flag15 bool + gvar16 ns.WallID + wp17 ns.WaypointID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + gvar80 ns.ObjectGroupID + gvar81 ns.ObjectGroupID + gvar82 ns.WallGroupID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + gvar90 ns.WaypointGroupID + gvar91 ns.WaypointGroupID + flag92 bool + flag93 bool + flag94 bool + flag95 bool + flag96 bool + flag97 bool + flag98 bool + flag99 bool + flag100 bool + flag101 bool + flag102 bool + flag103 bool + flag104 bool + flag105 bool + flag106 bool + flag107 bool + gvar108 int + ivar109 int + ivar110 int + ivar111 int + ivar112 int + ivar113 int + gvar114 ns.TimerID +) + +func init() { + flag15 = false + flag92 = false + flag93 = false + flag94 = false + flag95 = false + flag96 = false + flag97 = false + flag98 = false + flag99 = false + flag100 = false + flag101 = false + flag102 = false + flag103 = false + flag104 = false + flag105 = false + flag106 = false + flag107 = false + ivar111 = 0 + ivar112 = 0 + ivar113 = 0 +} +func CrowdQuiet() { + if flag15 { + goto LABEL1 + } + flag15 = true + ns.ObjectOff(obj4) + ns.ObjectOff(obj5) + ns.ObjectOff(obj6) + ns.Frozen(obj8, true) + ns.Frozen(obj9, true) + ns.Frozen(obj10, true) + ns.Frozen(obj11, true) + ns.Frozen(obj12, true) + ns.Frozen(obj13, true) + ns.Frozen(obj14, true) + ns.CreatureIdle(obj8) + ns.CreatureIdle(obj9) + ns.CreatureIdle(obj10) + ns.CreatureIdle(obj11) + ns.CreatureIdle(obj12) + ns.CreatureIdle(obj13) + ns.CreatureIdle(obj14) + ns.LookAtObject(obj8, ns.GetHost()) + ns.LookAtObject(obj9, ns.GetHost()) + ns.LookAtObject(obj10, ns.GetHost()) + ns.LookAtObject(obj11, ns.GetHost()) + ns.LookAtObject(obj12, ns.GetHost()) + ns.LookAtObject(obj13, ns.GetHost()) + ns.LookAtObject(obj14, ns.GetHost()) + CrowdFacePlayer() +LABEL1: + return +} +func CrowdNoisy() { + if !flag15 { + goto LABEL1 + } + if ns.IsObjectOn(obj4) { + goto LABEL1 + } + ns.ObjectOn(obj4) + ns.ObjectOn(obj5) + ns.ObjectOn(obj6) + ns.LookAtObject(obj8, obj9) + ns.LookAtObject(obj9, obj8) + ns.LookAtObject(obj10, obj11) + ns.LookAtObject(obj11, obj10) + ns.LookAtObject(obj12, obj11) + ns.LookAtObject(obj13, obj7) + ns.LookAtObject(obj14, obj7) + flag15 = false +LABEL1: + return +} +func CrowdFacePlayer() { + if !flag15 { + goto LABEL1 + } + ns.LookAtObject(obj8, ns.GetHost()) + ns.LookAtObject(obj9, ns.GetHost()) + ns.LookAtObject(obj10, ns.GetHost()) + ns.LookAtObject(obj11, ns.GetHost()) + ns.LookAtObject(obj12, ns.GetHost()) + ns.LookAtObject(obj13, ns.GetHost()) + ns.LookAtObject(obj14, ns.GetHost()) + ns.FrameTimer(2, CrowdFacePlayer) +LABEL1: + return +} +func SecretsInit() { + gvar16 = ns.Wall(97, 69) + wp17 = ns.Waypoint("SecretSounds") +} +func FireballSecret() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp17, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp17) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func OpenPushSecret() { + ns.WallOpen(gvar16) +} +func PushSecretXP() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp17, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp17) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 25) +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, ns.Waypoint("WellWP")) +} +func PlayerEnterCell() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag104 = true + ns.UnlockDoor(obj64) +LABEL1: + return +} +func PlayerExitCell() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag104 = false + ns.LockDoor(obj64) +LABEL1: + return +} +func GenericStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:UndertakerTalk01") +} +func GenericEnd() { + ns.SetDialog(obj30, ns.NORMAL, GenericStart, GenericEnd) +} +func GrillfStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:GrillfTalk01") +} +func GrillfEnd() { + ns.SetDialog(obj28, ns.NORMAL, GrillfStart, GrillfEnd) +} +func GrillfReset() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.LookAtObject(obj28, obj79) +LABEL1: + return +} +func PriestStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:PriestTalk01") +} +func PriestEnd() { + ns.SetDialog(obj31, ns.NORMAL, PriestStart, PriestEnd) +} +func SetMaxWelcome() { + flag92 = false +} +func MaxSayWelcome() { + if flag92 { + goto LABEL1 + } + ns.Chat(obj27, "Wiz02A.scr:MaxTalk01") + flag92 = true +LABEL1: + return +} +func MaxRumor1Start() { + ns.DestroyEveryChat() + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxRumor01") +} +func MaxRumor1End() { + ChooseMaxRumor() +} +func MaxRumor2Start() { + ns.DestroyEveryChat() + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxRumor02") +} +func MaxRumor2End() { + ChooseMaxRumor() +} +func MaxRumor3Start() { + ns.DestroyEveryChat() + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxRumor03") +} +func MaxRumor3End() { + ChooseMaxRumor() +} +func MaxRumor4Start() { + ns.DestroyEveryChat() + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxRumor04") +} +func MaxRumor4End() { + ChooseMaxRumor() +} +func BarKeepRumor1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:LameBarKeepRumor01") +} +func BarKeepRumorEnd() { + var v0 int + ivar110 = ns.Random(1, 4) + v0 = ivar110 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.SetDialog(obj7, ns.NORMAL, BarKeepRumor1Start, BarKeepRumorEnd) + goto LABEL5 +LABEL2: + ns.SetDialog(obj7, ns.NORMAL, BarKeepRumor2Start, BarKeepRumorEnd) + goto LABEL5 +LABEL3: + ns.SetDialog(obj7, ns.NORMAL, BarKeepRumor3Start, BarKeepRumorEnd) + goto LABEL5 +LABEL4: + ns.SetDialog(obj7, ns.NORMAL, BarKeepRumor4Start, BarKeepRumorEnd) + goto LABEL5 +LABEL5: + return +} +func BarKeepRumor2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:LameBarKeepRumor02") +} +func BarKeepRumor3Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:LameBarKeepRumor03") +} +func BarKeepRumor4Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:LameBarKeepRumor04") +} +func ChooseMaxRumor() { + var v0 int + ivar109 = ns.Random(1, 4) + v0 = ivar109 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.SetDialog(obj27, ns.NORMAL, MaxRumor1Start, MaxRumor1End) + goto LABEL5 +LABEL2: + ns.SetDialog(obj27, ns.NORMAL, MaxRumor2Start, MaxRumor2End) + goto LABEL5 +LABEL3: + ns.SetDialog(obj27, ns.NORMAL, MaxRumor3Start, MaxRumor3End) + goto LABEL5 +LABEL4: + ns.SetDialog(obj27, ns.NORMAL, MaxRumor4Start, MaxRumor4End) + goto LABEL5 +LABEL5: + return +} +func MaxGiveRewardStart() { + ns.DestroyEveryChat() + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxTalk03") + ns.Pickup(ns.GetHost(), obj72) +} +func MaxGiveRewardEnd() { + if !flag106 { + goto LABEL1 + } + ns.JournalEdit(ns.GetHost(), "ArrestRogues", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") +LABEL1: + ChooseMaxRumor() +} +func MaxProblemStart() { + ns.DestroyEveryChat() + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxTalk02") +} +func MaxProblemEnd() { + if flag106 { + goto LABEL1 + } + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "ArrestRogues", 2) + flag106 = true +LABEL1: + ChooseMaxRumor() +} +func WardenGreetStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:WardenTalk01") +} +func WardenGreetEnd() { + if flag99 { + goto LABEL1 + } + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "ArrestMorgan", 2) + flag99 = true +LABEL1: + ns.SetDialog(obj29, ns.NORMAL, WardenGreetStart, WardenGreetEnd) +} +func Warden1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:WardenTalk02") + flag97 = true +} +func Warden1End() { + flag107 = true + ns.CancelDialog(obj29) + ns.GiveXp(ns.GetHost(), 500) + ns.Pickup(ns.GetHost(), obj74) + if !flag99 { + goto LABEL1 + } + ns.JournalEdit(ns.GetHost(), "ArrestMorgan", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") +LABEL1: + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj27, ns.NORMAL, MaxGiveRewardStart, MaxGiveRewardEnd) + ns.WideScreen(false) + MorganEscortWarden() +} +func OpenJailDoor() { + if !ns.IsCaller(obj29) { + goto LABEL1 + } + ns.UnlockDoor(obj61) + ns.ObjectOff(obj68) +LABEL1: + return +} +func EnableRogueElevator() { + ns.MoveWaypoint(wp83, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.CreatureCageAppears, wp83) + ns.AudioEvent(ns.ChangeSpellbar, wp83) + ns.ObjectGroupOn(gvar80) + ns.ObjectOn(obj66) + ns.SetQuestStatus(1, "RogueElevatorEnabled") +} +func CryptChairTrigger() { + if flag95 { + goto LABEL1 + } + flag95 = true + ns.WallGroupOpen(gvar82) + goto LABEL2 +LABEL1: + flag95 = false + ns.WallGroupClose(gvar82) +LABEL2: + return +} +func MorganSecretXP() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectGroupOff(gvar81) + ns.MoveWaypoint(wp17, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp17) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +LABEL1: + return +} +func MorganGo() { + if !(flag93 == true && flag98 == false && flag107 == false) { + goto LABEL1 + } + ns.SetDialog(obj29, ns.NORMAL, Warden1Start, Warden1End) + ns.MoveObject(obj29, 3365, 5093) + ns.CreatureGuard(obj29, ns.GetObjectX(obj29), ns.GetObjectY(obj29), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func MorganDied() { + flag98 = true + flag97 = true + ns.SetQuestStatus(1, "MorganDead") + ns.SetDialog(obj27, ns.NORMAL, MaxGiveRewardStart, MaxGiveRewardEnd) + ns.SetDialog(obj29, ns.NORMAL, WardenGiveDeadRewardStart, WardenGiveDeadRewardEnd) +} +func MorganEscortWarden() { + if !(ns.Distance(ns.GetObjectX(obj25), ns.GetObjectY(obj25), ns.GetObjectX(obj29), ns.GetObjectY(obj29)) < 250) { + goto LABEL1 + } + ns.WayPointGroupOn(gvar90) + flag100 = true + ns.Wander(obj29) + ns.CreatureFollow(obj25, obj29) + goto LABEL2 +LABEL1: + ns.FrameTimer(15, MorganEscortWarden) +LABEL2: + return +} +func MoveWardenToTossTrigger() { + if !ns.IsCaller(obj29) { + goto LABEL1 + } + ns.Walk(obj29, ns.GetObjectX(obj70), ns.GetObjectY(obj70)) +LABEL1: + return +} +func WardenTossMorgan() { + if !ns.IsCaller(obj29) { + goto LABEL1 + } + ns.WayPointGroupOff(gvar90) + if !(ns.IsVisibleTo(ns.GetHost(), obj25) || ns.IsVisibleTo(ns.GetHost(), obj29)) { + goto LABEL2 + } + ns.Chat(obj29, "Wiz02A.scr:WardenTalk03") +LABEL2: + ns.Walk(obj25, 3588, 5426) +LABEL1: + return +} +func WardenBack() { + flag101 = true + ns.SetDialog(obj29, ns.NORMAL, WardenGiveAliveRewardStart, WardenGiveAliveRewardEnd) + ns.CreatureGuard(obj29, ns.GetObjectX(obj29), ns.GetObjectY(obj29), ns.GetObjectX(obj78), ns.GetObjectY(obj78), 0) + ns.Frozen(obj29, true) + ns.CreatureIdle(obj29) + ns.LookAtObject(obj29, obj78) +} +func WardenGiveDeadRewardStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:WardenTalk04") + ns.Pickup(ns.GetHost(), obj73) +} +func WardenGiveDeadRewardEnd() { + ns.GiveXp(ns.GetHost(), 300) + ns.JournalEdit(ns.GetHost(), "ArrestMorgan", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.CancelDialog(obj29) +} +func WardenGiveAliveRewardStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:WardenTalk05") +} +func WardenGiveAliveRewardEnd() { + ns.SetDialog(obj29, ns.NORMAL, WardenGiveAliveRewardStart, WardenGiveAliveRewardEnd) +} +func LockMorganCell() { + if !ns.IsCaller(obj25) { + goto LABEL1 + } + ns.CreatureGuard(obj25, ns.GetObjectX(obj25), ns.GetObjectY(obj25), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + if flag104 { + goto LABEL1 + } + ns.LockDoor(obj64) + ns.ObjectOff(obj69) + ns.WayPointGroupOff(gvar90) + ns.WayPointGroupOn(gvar91) + ns.Wander(obj29) + ns.ObjectOn(obj71) + ns.SetQuestStatus(1, "MorganCaptured") +LABEL1: + return +} +func Civvy1Start() { + var v0 int + ns.Frozen(obj39, true) + ns.CreatureIdle(obj39) + ns.LookAtObject(obj39, ns.GetHost()) + if !flag105 { + goto LABEL1 + } + ivar113 = 2 + goto LABEL2 +LABEL1: + ivar113 = ns.Random(1, 2) +LABEL2: + v0 = ivar113 + if v0 == 1 { + goto LABEL3 + } + if v0 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:JorganTalk01") + goto LABEL5 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaidenTalk01") + goto LABEL5 +LABEL5: + return +} +func Civvy1End() { + ns.Frozen(obj39, false) + ns.Wander(obj39) + ns.SetDialog(obj39, ns.NORMAL, Civvy1Start, Civvy1End) +} +func Civvy2Start() { + ns.Frozen(obj34, true) + ns.CreatureIdle(obj34) + ns.LookAtObject(obj34, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:GrunbarTalk01") +} +func Civvy2End() { + ns.Frozen(obj34, false) + ns.Wander(obj34) + ns.SetDialog(obj34, ns.NORMAL, Civvy2Start, Civvy2End) +} +func Civvy5Start() { + ns.Frozen(obj37, true) + ns.CreatureIdle(obj37) + ns.LookAtObject(obj37, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:AlbiTalk01") +} +func Civvy5End() { + ns.Frozen(obj37, false) + ns.Wander(obj37) + ns.SetDialog(obj37, ns.NORMAL, Civvy5Start, Civvy5End) +} +func Civvy6Start() { + ns.Frozen(obj38, true) + ns.CreatureIdle(obj38) + ns.LookAtObject(obj38, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:DorianTalk01") +} +func Civvy6End() { + ns.Frozen(obj38, false) + ns.Wander(obj38) + ns.SetDialog(obj38, ns.NORMAL, Civvy6Start, Civvy6End) +} +func ShariStart() { + var v0 int + ns.Frozen(obj40, true) + ns.CreatureIdle(obj40) + ns.LookAtObject(obj40, ns.GetHost()) + ivar111 = ns.Random(1, 2) + v0 = ivar111 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaidenTalk02") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaidenTalk03") + goto LABEL3 +LABEL3: + return +} +func ShariEnd() { + ns.Frozen(obj40, false) + ns.Wander(obj40) + ns.SetDialog(obj40, ns.NORMAL, ShariStart, ShariEnd) +} +func KaylaStart() { + var v0 int + ns.Frozen(obj41, true) + ns.CreatureIdle(obj41) + ns.LookAtObject(obj41, ns.GetHost()) + ivar112 = ns.Random(1, 2) + v0 = ivar112 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaidenTalk04") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaidenTalk05") + goto LABEL3 +LABEL3: + return +} +func KaylaEnd() { + ns.Frozen(obj41, false) + ns.Wander(obj41) + ns.SetDialog(obj41, ns.NORMAL, KaylaStart, KaylaEnd) +} +func JorganStart() { + ns.Frozen(obj33, true) + ns.CreatureIdle(obj33) + ns.LookAtObject(obj33, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Con03C.scr:ForemanF") +} +func JorganEnd() { + ns.Frozen(obj33, false) + ns.Wander(obj33) + ns.SetDialog(obj33, ns.NORMAL, JorganStart, JorganEnd) +} +func FentonStart() { + ns.Frozen(obj35, true) + ns.CreatureIdle(obj35) + ns.LookAtObject(obj35, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownsman3") +} +func FentonEnd() { + ns.Frozen(obj35, false) + ns.Wander(obj35) + ns.SetDialog(obj35, ns.NORMAL, FentonStart, FentonEnd) +} +func KelvinStart() { + ns.Frozen(obj36, true) + ns.CreatureIdle(obj36) + ns.LookAtObject(obj36, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownsman4") +} +func KelvinEnd() { + ns.Frozen(obj36, false) + ns.Wander(obj36) + ns.SetDialog(obj36, ns.NORMAL, KelvinStart, KelvinEnd) +} +func EowynnEnterMax() { + if !ns.IsCaller(obj39) { + goto LABEL1 + } + flag105 = true +LABEL1: + return +} +func EowynnExitMax() { + if !ns.IsCaller(obj39) { + goto LABEL1 + } + flag105 = false +LABEL1: + return +} +func CreatureSetup() { + ns.SetOwner(ns.GetHost(), obj18) + ns.SetOwner(ns.GetHost(), obj37) + ns.SetOwner(ns.GetHost(), obj38) + ns.SetOwner(ns.GetHost(), obj34) + ns.SetOwner(ns.GetHost(), obj33) + ns.SetOwner(ns.GetHost(), obj35) + ns.SetOwner(ns.GetHost(), obj36) + ns.SetOwner(ns.GetHost(), obj29) + ns.SetOwner(ns.GetHost(), obj27) + ns.SetOwner(ns.GetHost(), obj28) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj23) + ns.SetOwner(ns.GetHost(), obj24) + ns.SetOwner(ns.GetHost(), obj30) + ns.SetOwner(ns.GetHost(), obj7) + ns.SetOwner(ns.GetHost(), obj31) + ns.SetOwner(ns.GetHost(), obj32) + ns.SetOwner(ns.GetHost(), obj39) + ns.SetOwner(ns.GetHost(), obj40) + ns.SetOwner(ns.GetHost(), obj41) + ns.SetOwner(ns.GetHost(), obj42) + ns.SetOwner(ns.GetHost(), obj43) + ns.SetOwner(ns.GetHost(), obj44) + ns.SetOwner(ns.GetHost(), obj45) + ns.SetOwner(ns.GetHost(), obj46) + ns.SetOwner(ns.GetHost(), obj47) + ns.SetOwner(ns.GetHost(), obj48) + ns.SetOwner(ns.GetHost(), obj49) + ns.SetOwner(ns.GetHost(), obj50) + ns.SetOwner(ns.GetHost(), obj51) + ns.SetOwner(ns.GetHost(), obj8) + ns.SetOwner(ns.GetHost(), obj9) + ns.SetOwner(ns.GetHost(), obj10) + ns.SetOwner(ns.GetHost(), obj11) + ns.SetOwner(ns.GetHost(), obj12) + ns.SetOwner(ns.GetHost(), obj13) + ns.SetOwner(ns.GetHost(), obj14) + ns.SetOwner(ns.GetHost(), obj52) + ns.SetOwner(ns.GetHost(), obj53) + ns.SetOwner(ns.GetHost(), obj54) + ns.Wander(obj33) + ns.Wander(obj34) + ns.Wander(obj35) + ns.Wander(obj36) + ns.Wander(obj37) + ns.Wander(obj38) + ns.Wander(obj39) + ns.Wander(obj40) + ns.Wander(obj41) +} +func StateEngine() { + if !(ns.CurrentHealth(obj26) <= 0) { + goto LABEL1 + } + if !(flag93 == false && flag98 == false) { + goto LABEL1 + } + if !ns.IsVisibleTo(obj25, ns.GetHost()) { + goto LABEL1 + } + ns.Chat(obj25, "Wiz02A.scr:MorganTalk01") + ns.SetOwner(ns.GetHost(), obj25) + ns.CreatureFollow(obj25, ns.GetHost()) + flag93 = true +LABEL1: + if !flag101 { + goto LABEL2 + } + ns.LookAtObject(obj29, ns.GetHost()) +LABEL2: + gvar114 = ns.FrameTimer(2, StateEngine) +} +func EnemyRun() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func InitObjects() { + obj18 = ns.Object("F6Guard4") + obj19 = ns.Object("Sheriff") + obj7 = ns.Object("Mlurgh") + obj20 = ns.Object("Kincaid") + obj22 = ns.Object("Mystic") + obj21 = ns.Object("BrightBlades") + obj23 = ns.Object("MiscVendor") + obj24 = ns.Object("Phim") + obj30 = ns.Object("Undertaker") + obj31 = ns.Object("Priest") + obj55 = ns.Object("EmptyRoomDoor") + obj56 = ns.Object("GuardDoor1") + obj57 = ns.Object("GuardDoor2") + obj27 = ns.Object("Max") + obj28 = ns.Object("Grillf") + obj32 = ns.Object("Loproc") + obj33 = ns.Object("Jorgan") + obj34 = ns.Object("Grunbar") + obj35 = ns.Object("Fenton") + obj36 = ns.Object("Kelvin") + obj37 = ns.Object("Albi") + obj38 = ns.Object("Dorian") + obj39 = ns.Object("Eowynn") + obj40 = ns.Object("Shari") + obj41 = ns.Object("Kayla") + obj42 = ns.Object("Maiden1") + obj43 = ns.Object("Maiden2") + obj44 = ns.Object("Maiden5") + obj45 = ns.Object("Maiden6") + obj46 = ns.Object("Maiden7") + obj47 = ns.Object("Maiden8") + obj48 = ns.Object("Maiden9") + obj49 = ns.Object("BarFly1") + obj50 = ns.Object("BarFly2") + obj51 = ns.Object("BarFly3") + obj8 = ns.Object("MlurghPatron1") + obj9 = ns.Object("MlurghPatron2") + obj10 = ns.Object("MlurghPatron3") + obj11 = ns.Object("MlurghPatron4") + obj12 = ns.Object("MlurghPatron5") + obj13 = ns.Object("MlurghPatron6") + obj14 = ns.Object("MlurghPatron7") + obj52 = ns.Object("TowerNPC") + obj53 = ns.Object("TowerNPC2") + obj54 = ns.Object("TowerMaiden") + obj78 = ns.Object("WardenFace") + obj72 = ns.Object("MaxReward") + obj58 = ns.Object("MaxHomeDoor1") + obj59 = ns.Object("MaxHomeDoor2") + obj60 = ns.Object("GearRoomDoor") + obj66 = ns.Object("RogueElevator") + obj67 = ns.Object("PlayerElevatorTopTrigger") + obj61 = ns.Object("FirstJailDoor") + obj68 = ns.Object("JailDoorTrigger") + obj79 = ns.Object("GrillfFace") + obj29 = ns.Object("Warden") + obj4 = ns.Object("AmbSound1") + obj5 = ns.Object("AmbSound2") + obj6 = ns.Object("AmbSound3") + obj73 = ns.Object("DeadReward") + obj74 = ns.Object("AliveReward") + obj75 = ns.Object("RogueKey") + obj65 = ns.Object("RogueDoor") + obj25 = ns.Object("Morgan") + obj76 = ns.Object("CryptChairMover") + obj26 = ns.Object("MorganGuard1") + obj69 = ns.Object("MorganCellTrigger") + obj71 = ns.Object("WardenBackTrigger") + obj64 = ns.Object("MorganCellDoor") + obj77 = ns.Object("MorganKey") + obj62 = ns.Object("MorganDoor1") + obj63 = ns.Object("MorganDoor2") + gvar80 = ns.ObjectGroup("RogueGears") + gvar81 = ns.ObjectGroup("MorganSecret") + gvar82 = ns.WallGroup("TroveWalls") +} +func SetTownDialog() { + if ns.GetQuestStatus("MorganCaptured") != 1 { + goto LABEL1 + } + flag93 = true + flag97 = true + if ns.GetQuestStatus("MorganDead") == 1 { + goto LABEL2 + } + ns.ObjectOff(obj69) + ns.ObjectOff(obj70) + ns.ObjectOff(obj67) + ns.ObjectOff(obj68) + ns.ObjectOff(obj71) + ns.LockDoor(obj64) + ns.UnlockDoor(obj61) + ns.UnlockDoor(obj65) + ns.UnlockDoor(obj62) + ns.UnlockDoor(obj63) + ns.ObjectOn(obj66) + ns.MoveObject(obj25, 3627, 5467) +LABEL2: + goto LABEL3 +LABEL1: + ns.SetDialog(obj27, ns.NORMAL, MaxProblemStart, MaxProblemEnd) + ns.SetDialog(obj29, ns.NORMAL, WardenGreetStart, WardenGreetEnd) +LABEL3: + ns.SetDialog(obj31, ns.NORMAL, PriestStart, PriestEnd) + ns.SetDialog(obj23, ns.NORMAL, GenericStart, GenericEnd) + ns.SetDialog(obj30, ns.NORMAL, GenericStart, GenericEnd) + ns.SetDialog(obj39, ns.NORMAL, Civvy1Start, Civvy1End) + ns.SetDialog(obj34, ns.NORMAL, Civvy2Start, Civvy2End) + ns.SetDialog(obj37, ns.NORMAL, Civvy5Start, Civvy5End) + ns.SetDialog(obj38, ns.NORMAL, Civvy6Start, Civvy6End) + ns.SetDialog(obj40, ns.NORMAL, ShariStart, ShariEnd) + ns.SetDialog(obj41, ns.NORMAL, KaylaStart, KaylaEnd) + ns.SetDialog(obj33, ns.NORMAL, JorganStart, JorganEnd) + ns.SetDialog(obj35, ns.NORMAL, FentonStart, FentonEnd) + ns.SetDialog(obj36, ns.NORMAL, KelvinStart, KelvinEnd) + ns.StoryPic(obj27, "MaxPic") + ns.StoryPic(obj30, "UndertakerPic") + ns.StoryPic(obj38, "Townsman2Pic") + ns.StoryPic(obj34, "MalePic7") + ns.StoryPic(obj37, "MalePic1") + ns.StoryPic(obj33, "Townsman3Pic") + ns.StoryPic(obj35, "MalePic8") + ns.StoryPic(obj36, "MalePic5") + ns.StoryPic(obj29, "WardenPic") + ns.StoryPic(obj31, "GalavaPriestPic") + ns.StoryPic(obj39, "MaidenPic3") + ns.StoryPic(obj40, "MaidenPic") + ns.StoryPic(obj41, "MaidenPic2") +} +func LoprocSeesPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Chat(obj32, "Wiz02A.scr:AppleManTalk01") +LABEL1: + return +} +func MorganCapturePiece() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !(flag93 == true && flag107 != true) { + goto LABEL1 + } + if !(ns.CurrentHealth(obj25) > 0) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj29) + ns.SetDialog(obj29, ns.NORMAL, Warden1Start, Warden1End) + ns.StartDialog(obj29, ns.GetHost()) +LABEL1: + return +} +func MapInitialize() { + InitObjects() + wp84 = ns.Waypoint("Inn1WP") + wp85 = ns.Waypoint("Inn2WP") + wp86 = ns.Waypoint("RogueElevatorWP") + wp83 = ns.Waypoint("PlayerSounds") + wp87 = ns.Waypoint("ExitTowerWP") + wp88 = ns.Waypoint("CryptChairStartWP") + wp89 = ns.Waypoint("CryptChairEndWP") + gvar90 = ns.WaypointGroup("ToJailWPPath") + gvar91 = ns.WaypointGroup("WardenGoBackWP") + ns.ObjectOn(obj76) + ns.ObjectGroupOff(gvar80) + ns.ObjectOff(obj66) + ns.ObjectOff(obj71) + ns.WayPointGroupOff(gvar90) + ns.WayPointGroupOff(gvar91) + ns.LockDoor(obj56) + ns.LockDoor(obj57) + ns.LockDoor(obj58) + ns.LockDoor(obj59) + ns.LockDoor(obj60) + ns.LockDoor(obj61) + if ns.GetQuestStatus("MorganDead") != 1 { + goto LABEL1 + } + ns.Delete(obj25) +LABEL1: + SecretsInit() + SetTownDialog() + ns.FrameTimer(1, CreatureSetup) + StateEngine() +} +func MapEntry() { + ns.UnBlind() + ns.Music(17, 100) +} +func PlayerDeath() { + ns.DeathScreen(2) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz02b/dummy_test.go b/examples/wiz02b/dummy_test.go new file mode 100644 index 0000000..bfa3a78 --- /dev/null +++ b/examples/wiz02b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz02b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz02b/wiz02b.go b/examples/wiz02b/wiz02b.go new file mode 100644 index 0000000..e72b927 --- /dev/null +++ b/examples/wiz02b/wiz02b.go @@ -0,0 +1,1458 @@ +package wiz02b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + gvar9 ns.ObjectID + gvar10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + gvar14 ns.WallGroupID + wp15 ns.WaypointID + wp16 ns.WaypointID + wp17 ns.WaypointID + wp18 ns.WaypointID + flag19 bool + flag20 bool + flag21 bool + flag22 bool + flag23 bool + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + gvar30 int + gvar31 int + gvar32 int + gvar33 int + gvar34 int + gvar35 int + fvar36 float32 + fvar37 float32 + fvar38 float32 + fvar39 float32 + fvar40 float32 + fvar41 float32 + fvar42 float32 + fvar43 float32 + fvar44 float32 + fvar45 float32 + fvar46 float32 + fvar47 float32 + fvar48 float32 + fvar49 float32 + fvar50 float32 + fvar51 float32 + fvar52 float32 + fvar53 float32 + flag54 bool + flag55 bool + flag56 bool + flag57 bool + flag58 bool + flag59 bool + flag60 bool + flag61 bool + flag62 bool + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + flag68 bool + flag69 bool + flag70 bool + flag71 bool + flag72 bool + flag73 bool + flag74 bool + flag75 bool + flag76 bool + flag77 bool + ivar78 int + ivar79 int + ivar80 int + gvar81 int + ivar82 int + ivar83 int + ivar84 int + gvar85 int + gvar86 int + ivar87 int + gvar88 int + gvar89 int + ivar90 int + ivar91 int + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + obj103 ns.ObjectID + obj104 ns.ObjectID + obj105 ns.ObjectID + obj106 ns.ObjectID + obj107 ns.ObjectID + gvar108 ns.ObjectGroupID + gvar109 ns.ObjectGroupID + obj110 ns.ObjectID + obj111 ns.ObjectID + obj112 ns.ObjectID + obj113 ns.ObjectID + obj114 ns.ObjectID + obj115 ns.ObjectID + obj116 ns.ObjectID + obj117 ns.ObjectID + obj118 ns.ObjectID + obj119 ns.ObjectID + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + obj123 ns.ObjectID + obj124 ns.ObjectID + obj125 ns.ObjectID + obj126 ns.ObjectID + gvar127 ns.ObjectID + gvar128 ns.ObjectID + gvar129 ns.ObjectID + obj130 ns.ObjectID + obj131 ns.ObjectID + obj132 ns.ObjectID + obj133 ns.ObjectID + obj134 ns.ObjectID + obj135 ns.ObjectID + gvar136 ns.ObjectGroupID + gvar137 ns.ObjectGroupID + gvar138 ns.WallGroupID + gvar139 ns.WallGroupID + gvar140 ns.WallGroupID + gvar141 ns.WallGroupID + gvar142 ns.WallGroupID + wp143 ns.WaypointID + wp144 ns.WaypointID + wp145 ns.WaypointID + wp146 ns.WaypointID + wp147 ns.WaypointID + gvar148 ns.WaypointGroupID + gvar149 ns.WaypointGroupID + gvar150 ns.WaypointGroupID +) + +func init() { + flag19 = false + flag20 = false + flag21 = false + flag22 = false + flag23 = false + gvar24 = 0 + gvar25 = 1 + gvar26 = 2 + gvar27 = 3 + gvar28 = 4 + gvar29 = 5 + gvar30 = 6 + gvar31 = 7 + gvar32 = 8 + gvar33 = 9 + gvar34 = 10 + gvar35 = gvar24 + fvar36 = 4586 + fvar37 = 4430 + fvar38 = 4539 + fvar39 = 4373 + fvar44 = 4471 + fvar45 = 4423 + fvar46 = 4312 + fvar47 = 4257 + flag54 = false + flag55 = false + flag56 = false + flag57 = false + flag58 = false + flag59 = false + flag60 = false + flag61 = false + flag62 = false + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + flag68 = false + flag69 = false + flag70 = false + flag71 = false + flag72 = false + flag73 = false + flag74 = false + flag75 = false + flag76 = false + flag77 = false + ivar78 = 0 + ivar79 = 0 + ivar80 = 0 + gvar81 = 0 + ivar82 = 0 + ivar83 = 0 + ivar84 = 0 + gvar85 = 0 + gvar86 = 1 + ivar87 = 1 + gvar89 = 0 + ivar90 = 0 + ivar91 = 0 +} +func LibrarySetup() { + obj4 = ns.Object("Librarian1") + obj5 = ns.Object("Librarian2") + obj6 = ns.Object("Archivist") + obj7 = ns.Object("Necromancer") + obj8 = ns.Object("FakeBook") + obj11 = ns.Object("FakeBookMover") + obj13 = ns.Object("SwapbookMover") + gvar14 = ns.WallGroup("SecretExitWalls") + wp15 = ns.Waypoint("AttackWP") + wp16 = ns.Waypoint("NecroStealWP") + wp17 = ns.Waypoint("NecroVanishWP") + ns.FrameTimer(1, OwnPeople) +} +func OwnPeople() { + ns.SetOwner(ns.GetHost(), obj4) + ns.SetOwner(ns.GetHost(), obj5) + ns.SetOwner(ns.GetHost(), obj6) + ns.StoryPic(obj6, "ArchivistPic") + ns.StoryPic(obj7, "NecromancerPic") + ns.ObjectOn(obj11) + ns.ObjectOn(obj13) +} +func TheftPieceCheck() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if ns.GetQuestStatus("BookStolen") == 1 { + goto LABEL1 + } + ns.SetQuestStatus(1, "BookStolen") + ns.WideScreen(true) + ns.SetQuestStatus(1, "InLetterboxMode") + ns.Frozen(ns.GetHost(), true) + ns.LookAtObject(ns.GetHost(), obj6) + flag19 = true + ns.Move(obj7, wp15) + ns.Music(11, 100) +LABEL1: + return +} +func TheftPieceBegin() { + if !ns.IsCaller(obj7) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj7, true) + ns.Frozen(obj6, true) + ns.CreatureIdle(obj4) + ns.CreatureIdle(obj5) + ns.CreatureIdle(obj7) + ns.CreatureIdle(obj6) + ns.LookAtObject(obj4, obj7) + ns.LookAtObject(obj5, obj7) + ns.LookAtObject(obj6, obj7) + ns.LookAtObject(obj7, obj6) + ns.SetDialog(obj6, ns.NEXT, ArchivistTalkStart, ArchivistTalkEnd) + ns.StartDialog(obj6, ns.GetHost()) +LABEL1: + return +} +func Lib1Talk() { + ns.DestroyEveryChat() + ns.Frozen(obj4, false) + ns.Frozen(obj5, false) + ns.Frozen(obj7, false) + ns.SecondTimer(1, StartTheFight) +} +func StartTheFight() { + ns.Frozen(obj7, true) + ns.CreatureIdle(obj7) + ns.LookAtObject(obj7, obj4) + ns.CastSpellObjectLocation(ns.SPELL_FIREBALL, obj7, ns.GetObjectX(obj4), ns.GetObjectY(obj4)) +} +func Lib1Die() { + ns.MoveWaypoint(wp18, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.NecromancerTaunt, wp18) + ns.SecondTimer(1, ShootLib2) +} +func Lib2Die() { + ns.AudioEvent(ns.NecromancerTaunt, wp18) + ns.Frozen(obj7, false) + ns.Chat(obj5, "Wiz02:MiscWizard02") + ns.Move(obj7, wp16) +} +func ShootLib2() { + if !(ns.CurrentHealth(obj5) > 0) { + goto LABEL1 + } + ns.LookAtObject(obj7, obj5) + ns.CastSpellObjectLocation(ns.SPELL_FIREBALL, obj7, ns.GetObjectX(obj5), ns.GetObjectY(obj5)) + ns.FrameTimer(1, ShootLib2) +LABEL1: + return +} +func NecroExit() { + if !ns.IsCaller(obj7) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + gvar35 = gvar29 + ns.Frozen(obj7, true) + ns.CreatureIdle(obj7) + ns.LookAtObject(obj7, obj6) + ns.SetDialog(obj7, ns.NEXT, NecromancerStart, ArchivistTalkEnd) + flag23 = true + ns.StartDialog(obj7, ns.GetHost()) +LABEL1: + return +} +func NecroWalkAway() { + ns.Move(obj7, wp17) + gvar35 = gvar31 + ns.SetDialog(obj6, ns.NORMAL, ArchivistTalkStart, ArchivistTalkEnd) + ns.StartDialog(obj6, ns.GetHost()) +} +func RemoveNecro() { + if !ns.IsCaller(obj7) { + goto LABEL1 + } + if !flag23 { + goto LABEL1 + } + flag20 = true + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj7, 4004, 651) + ns.ObjectOff(obj7) + ns.SetQuestStatus(0, "InLetterboxMode") + if !flag22 { + goto LABEL1 + } + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj6, false) + ns.CreatureGuard(obj6, ns.GetObjectX(obj6), ns.GetObjectY(obj6), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + EnableGroupA() + ns.Music(18, 100) +LABEL1: + return +} +func OpenExitWalls() { + ns.WallGroupOpen(gvar14) + CheckArchivist() +} +func ArchivistTalkStart() { + var v0 int + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj6) + if !ns.HasItem(ns.GetHost(), gvar9) { + goto LABEL1 + } + if gvar35 == gvar34 { + goto LABEL1 + } + gvar35 = gvar33 +LABEL1: + v0 = gvar35 + if v0 == gvar24 { + goto LABEL2 + } + if v0 == gvar26 { + goto LABEL3 + } + if v0 == gvar31 { + goto LABEL4 + } + if v0 == gvar32 { + goto LABEL5 + } + if v0 == gvar33 { + goto LABEL6 + } + if v0 == gvar34 { + goto LABEL7 + } + goto LABEL8 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:ArchivistSurprise") + gvar35 = gvar25 + goto LABEL8 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:ArchivistSnob") + gvar35 = gvar27 + goto LABEL8 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:OldArchivist01") + ns.CreatureGuard(obj6, 3650, 1056, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + goto LABEL8 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:OldArchivist02") + ns.CreatureGuard(obj6, 3650, 1056, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + goto LABEL8 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:OldArchivist03") + ns.CreatureGuard(obj6, 3650, 1056, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + goto LABEL8 +LABEL7: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:OldArchivistTalk04") + ns.CreatureGuard(obj6, 3650, 1056, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + goto LABEL8 +LABEL8: + return +} +func ArchivistTalkEnd() { + var v0 int + v0 = gvar35 + if v0 == gvar25 { + goto LABEL1 + } + if v0 == gvar26 { + goto LABEL2 + } + if v0 == gvar27 { + goto LABEL3 + } + if v0 == gvar28 { + goto LABEL4 + } + if v0 == gvar29 { + goto LABEL5 + } + if v0 == gvar30 { + goto LABEL6 + } + if v0 == gvar31 { + goto LABEL7 + } + if v0 == gvar32 { + goto LABEL8 + } + if v0 == gvar33 { + goto LABEL9 + } + if v0 == gvar34 { + goto LABEL10 + } + goto LABEL11 +LABEL1: + ns.SetDialog(obj7, ns.NEXT, NecromancerStart, ArchivistTalkEnd) + ns.StartDialog(obj7, ns.GetHost()) + goto LABEL11 +LABEL2: + ns.SetDialog(obj6, ns.NEXT, ArchivistTalkStart, ArchivistTalkEnd) + ns.StartDialog(obj6, ns.GetHost()) + goto LABEL11 +LABEL3: + ns.SetDialog(obj7, ns.NEXT, NecromancerStart, ArchivistTalkEnd) + ns.StartDialog(obj7, ns.GetHost()) + goto LABEL11 +LABEL4: + ns.CancelDialog(obj7) + ns.CancelDialog(obj6) + Lib1Talk() + goto LABEL11 +LABEL5: + ns.SetDialog(obj7, ns.NEXT, NecromancerStart, ArchivistTalkEnd) + ns.StartDialog(obj7, ns.GetHost()) + goto LABEL11 +LABEL6: + ns.CancelDialog(obj7) + ns.Pickup(obj7, obj8) + ns.Frozen(obj7, false) + ns.FrameTimer(1, NecroWalkAway) + goto LABEL11 +LABEL7: + ns.SetDialog(obj6, ns.NORMAL, ArchivistTalkStart, ArchivistTalkEnd) + if flag21 { + goto LABEL12 + } + ns.JournalEntry(ns.GetHost(), "GetNecromancer", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + flag21 = true +LABEL12: + gvar35 = gvar32 + flag22 = true + if !flag20 { + goto LABEL13 + } + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj6, false) + EnableGroupA() + ns.Music(18, 100) +LABEL13: + goto LABEL11 +LABEL8: + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj6, ns.NORMAL, ArchivistTalkStart, ArchivistTalkEnd) + EnableGroupA() + goto LABEL11 +LABEL9: + if ns.HasItem(ns.GetHost(), gvar10) { + goto LABEL14 + } + ns.Pickup(ns.GetHost(), gvar10) + ns.JournalEdit(ns.GetHost(), "ArchivistBook", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.GiveXp(ns.GetHost(), 300) + ns.PrintToAll("GeneralPrint:GainedItem") +LABEL14: + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj6, ns.NORMAL, ArchivistTalkStart, ArchivistTalkEnd) + gvar35 = gvar34 + ns.Music(15, 100) + goto LABEL11 +LABEL10: + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj6, ns.NORMAL, ArchivistTalkStart, ArchivistTalkEnd) + goto LABEL11 +LABEL11: + return +} +func NecromancerStart() { + var v0 int + v0 = gvar35 + if v0 == gvar25 { + goto LABEL1 + } + if v0 == gvar27 { + goto LABEL2 + } + if v0 == gvar29 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:Necromancer01") + gvar35 = gvar26 + goto LABEL4 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:NecroTaunt") + gvar35 = gvar28 + goto LABEL4 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:NecroHappy") + gvar35 = gvar30 + goto LABEL4 +LABEL4: + return +} +func CheckArchivist() { + if !(ns.Distance(ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), ns.GetObjectX(obj6), ns.GetObjectY(obj6)) <= 100) { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj6) + ns.LookAtObject(obj6, ns.GetHost()) + ns.StartDialog(obj6, ns.GetHost()) + goto LABEL2 +LABEL1: + ns.FrameTimer(15, CheckArchivist) +LABEL2: + return +} +func ReleasePlayer() { +} +func EnableGroupA() { + ns.ObjectGroupOn(gvar108) +} +func MainReceptionistGreetingStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:MRTalk01") + ns.UnlockDoor(obj110) + ns.UnlockDoor(obj111) + ns.SetQuestStatus(1, "MainReceptionistTalked") +} +func MainReceptionistGreetingEnd() { + ns.CancelDialog(obj92) +} +func HorvathGivesTaskStart() { + ns.JournalEdit(ns.GetHost(), "MeetHorvath", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:HorvathTalk01") + ns.SetQuestStatus(1, "HorvathGaveAmuletQuest") +} +func HorvathGivesTaskEnd() { + ns.SetDialog(obj95, ns.NEXT, HorvathGivesTask1aStart, HorvathGivesTask1aEnd) + ns.StartDialog(obj95, ns.GetHost()) +} +func HorvathGivesTask1aStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:HorvathTalk01a") +} +func HorvathGivesTask1aEnd() { + ns.SetDialog(obj95, ns.NORMAL, HorvathGivesTask1bStart, HorvathGivesTask1bEnd) + ns.StartDialog(obj95, ns.GetHost()) +} +func HorvathGivesTask1bStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:HorvathTalk01b") +} +func HorvathGivesTask1bEnd() { + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "ReturnToHorvath", 2) + ns.SetDialog(obj95, ns.NORMAL, HorvathWaitingStart, HorvathWaitingEnd) + ns.SetDialog(obj101, ns.NORMAL, ArchivistHappyStart, ArchivistHappyEnd) +} +func HorvathWaitingStart() { + if ns.HasItem(ns.GetHost(), gvar10) { + goto LABEL1 + } + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:HorvathTalk02") + goto LABEL2 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:HorvathTalk03") +LABEL2: + return +} +func HorvathWaitingEnd() { + if ns.HasItem(ns.GetHost(), gvar10) { + goto LABEL1 + } + ns.SetDialog(obj95, ns.NORMAL, HorvathWaitingStart, HorvathWaitingEnd) + goto LABEL2 +LABEL1: + ns.CancelDialog(obj95) + ns.GiveXp(ns.GetHost(), 1000) + flag72 = true + ns.JournalEdit(ns.GetHost(), "ReturnToHorvath", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + gvar127 = ns.GetLastItem(ns.GetHost()) + for { + if gvar127 == 0 { + goto LABEL3 + } + gvar129 = ns.GetPreviousItem(gvar127) + if gvar127 != gvar9 { + goto LABEL4 + } + ns.Delete(gvar127) + LABEL4: + gvar127 = gvar129 + } +LABEL3: + ns.FrameTimer(1, DropAmulet) +LABEL2: + return +} +func LewisIntroStart() { + ns.LookAtObject(obj96, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:LewisTalk01") +} +func LewisIntroEnd() { + ns.Walk(obj96, 4582, 4363) + ns.CancelDialog(obj96) +} +func LewisInPositionTrigger() { + if !ns.IsCaller(obj96) { + goto LABEL1 + } + flag56 = true + ns.Chat(obj96, "Wiz02B.scr:LewisTalk02") + flag57 = true + ns.Frozen(obj96, true) + ns.Frozen(obj97, true) + ns.CreatureIdle(obj96) + ns.LookAtObject(obj96, ns.GetHost()) +LABEL1: + return +} +func LewisBookQuest() { + ns.SetDialog(obj97, ns.NEXT, FrogTalk3Start, FrogTalk3End) + ns.StartDialog(obj97, ns.GetHost()) +} +func ReadyForFirstSwap() { +} +func ReadyForFirstReturn() { + var v0 int + v0 = ivar82 + if v0 == 30 { + goto LABEL1 + } + if v0 == 150 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Chat(obj97, "Wiz02B.scr:LewisTalk04") + goto LABEL3 +LABEL2: + ns.Chat(obj97, "Wiz02B.scr:LewisTalk05") + flag58 = true + goto LABEL3 +LABEL3: + ivar82 += 2 +} +func ShowOnOff() { + if !(flag59 == false && flag57 == true && flag60 == false) { + goto LABEL1 + } + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj96) + flag59 = true + FrogRoomStuff() +LABEL1: + if !(flag59 == false && flag58 == true && flag61 == false) { + goto LABEL2 + } + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj97) + flag59 = true + FrogRoomStuff() +LABEL2: + return +} +func GetArchivistButton() { + flag76 = true + flag77 = false + ns.MoveWaypoint(wp18, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.ShortBellsUp, wp18) + ns.WayPointGroupOff(gvar150) + ns.WayPointGroupOn(gvar149) + ns.Wander(obj101) + if ns.GetQuestStatus("HorvathGaveAmuletQuest") != 1 { + goto LABEL1 + } + if ns.GetQuestStatus("LockLibraryGates") == 1 { + goto LABEL2 + } + if !ns.IsLocked(obj112) { + goto LABEL2 + } + ns.SetDialog(obj101, ns.NORMAL, ArchivistHappyStart, ArchivistHappyEnd) +LABEL2: + goto LABEL3 +LABEL1: + ns.SetDialog(obj101, ns.NORMAL, ArchivistMadStart, ArchivistMadEnd) +LABEL3: + return +} +func ArchivistAtGate() { + if !ns.IsCaller(obj101) { + goto LABEL1 + } + ns.WayPointGroupOff(gvar149) + if ns.IsTalking() { + goto LABEL1 + } + if !(flag76 == true && flag77 == false) { + goto LABEL1 + } + ns.Chat(obj101, "Wiz02B.scr:ArchivistTalk01") + flag77 = true + flag76 = false +LABEL1: + return +} +func ArchivistGuard() { + if !ns.IsCaller(obj101) { + goto LABEL1 + } + ns.CreatureGuard(obj101, ns.GetObjectX(obj101), ns.GetObjectY(obj101), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func ArchivistHappyStart() { + ns.DestroyEveryChat() + ns.Frozen(obj101, true) + ns.CreatureIdle(obj101) + ns.LookAtObject(obj101, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:ArchivistTalk05") + flag76 = false + flag77 = true +} +func ArchivistHappyEnd() { + ns.Frozen(obj101, false) + ns.ObjectOff(obj135) + ns.UnlockDoor(obj112) + ns.UnlockDoor(obj113) + ns.ObjectOff(obj130) + ns.WayPointGroupOff(gvar149) + ns.WayPointGroupOn(gvar150) + ns.CreatureIdle(obj101) + ns.Wander(obj101) + ns.CancelDialog(obj101) +} +func ArchivistMadStart() { + var v0 int + ns.DestroyEveryChat() + ns.Frozen(obj101, true) + ns.CreatureIdle(obj101) + ns.LookAtObject(obj101, ns.GetHost()) + flag76 = false + flag77 = true + v0 = ivar87 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:ArchivistTalk02") + ivar87 += 1 + goto LABEL4 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:ArchivistTalk03") + ivar87 += 1 + goto LABEL4 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:ArchivistTalk04") + ivar78 += 1 + goto LABEL4 +LABEL4: + return +} +func ArchivistMadEnd() { + ns.WayPointGroupOff(gvar149) + ns.WayPointGroupOn(gvar150) + ns.Frozen(obj101, false) + ns.CreatureIdle(obj101) + ns.Wander(obj101) +} +func OpenLibrarySecret1() { + ns.MoveWaypoint(wp18, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp18) + ns.NoWallSound(true) + ns.ObjectOn(obj131) + ns.ObjectOn(obj132) + ns.WallOpen(ns.Wall(141, 99)) + ns.NoWallSound(false) + ns.ObjectGroupOn(gvar109) + SwapRoomCheck() +} +func CloseLibrarySecret1() { + if flag64 { + goto LABEL1 + } + ns.WallClose(ns.Wall(141, 99)) + flag64 = true +LABEL1: + return +} +func OpenClassSecretWalls() { + ns.WallGroupOpen(gvar141) + ns.UnlockDoor(obj121) + flag71 = true +} +func OpenSwapWalls() { + ns.WallGroupOpen(gvar140) +} +func CloseSpiderWalls() { + ivar90 += 1 + ns.WallGroupClose(gvar139) + flag65 = true + OpenSwapWalls() + if !(ns.CurrentHealth(obj102) > 0) { + goto LABEL1 + } + ns.CreatureIdle(obj102) +LABEL1: + if !(ns.CurrentHealth(obj103) > 0) { + goto LABEL2 + } + ns.CreatureIdle(obj103) +LABEL2: + if !(ns.CurrentHealth(obj104) > 0) { + goto LABEL3 + } + ns.CreatureIdle(obj104) +LABEL3: + return +} +func SpiderSwapCountDown() { + ivar90 -= 1 +} +func LibrarianTalkStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:Librarian3") +} +func LibrarianTalkEnd() { + ns.CancelDialog(obj107) +} +func GiveLightBook() { + ns.Pickup(ns.GetHost(), obj126) +} +func CheckIfReturningToMap() { + flag67 = true + if ns.GetQuestStatus("FirstSwapComplete") != 1 { + goto LABEL1 + } + ns.ObjectOff(obj98) + ns.MoveObject(obj97, 4564, 4382) + ns.MoveObject(obj96, 4496, 4684) + ns.WayPointGroupOn(gvar148) + ns.Wander(obj96) + flag55 = true + flag56 = true + flag57 = true + flag58 = true + flag59 = false + flag60 = true + flag61 = true + flag62 = true + flag63 = true + ns.SetOwner(ns.GetHost(), obj97) + ns.SetOwner(ns.GetHost(), obj96) + ns.UnlockDoor(obj110) + ns.UnlockDoor(obj111) +LABEL1: + if ns.GetQuestStatus("MainReceptionistTalked") != 1 { + goto LABEL2 + } + if !(ns.IsLocked(obj110) && ns.IsLocked(obj111)) { + goto LABEL2 + } + ns.UnlockDoor(obj110) + ns.UnlockDoor(obj111) +LABEL2: + if ns.GetQuestStatus("SwapBookTaken") != 1 { + goto LABEL3 + } + ns.Delete(obj12) +LABEL3: + if ns.GetQuestStatus("LockLibraryGates") != 1 { + goto LABEL4 + } + ns.LockDoor(obj112) + ns.LockDoor(obj113) +LABEL4: + return +} +func FinalSwapRoomCheck() { + flag68 = true +} +func PlayerMadeFinalSwap() { + ivar91 += 1 +} +func FinalSwapCountDown() { + ivar91 -= 1 +} +func FrogRoomStuff() { + if !(flag56 == true && flag57 == true && flag59 == false && flag61 == false) { + goto LABEL1 + } + ns.LookAtObject(obj96, obj99) +LABEL1: + if !(flag59 == true && flag60 == false) { + goto LABEL2 + } + if ns.GetQuestStatus("FirstSwapComplete") == 1 { + goto LABEL2 + } + ns.Effect(ns.LIGHTNING, fvar40, fvar41, fvar42, fvar43) + ns.Effect(ns.LIGHTNING, fvar44, fvar48, fvar45, fvar49) + ns.MoveWaypoint(wp18, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if ivar79 != 0 { + goto LABEL3 + } + ns.AudioEvent(ns.LightningBolt, wp18) + ivar79 += 2 + goto LABEL4 +LABEL3: + ivar79 += 2 +LABEL4: + if !(ivar79 > 8) { + goto LABEL5 + } + ivar79 = 0 +LABEL5: + if ivar80 != 0 { + goto LABEL6 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj96), ns.GetObjectY(obj96), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj97), ns.GetObjectY(obj97), 0, 0) + if !(ivar83 < 92) { + goto LABEL7 + } + if flag73 { + goto LABEL7 + } + ns.Chat(obj96, "Wiz02B.scr:LewisTalk03") + ns.Chat(obj97, "Wiz02B.scr:FrogTalk01") + flag73 = true +LABEL7: + if ivar83 != 92 { + goto LABEL8 + } + flag73 = false +LABEL8: + if !(ivar83 > 92 && ivar83 < 182) { + goto LABEL9 + } + if flag73 { + goto LABEL9 + } + ns.Chat(obj96, "Wiz02B.scr:FrogTalk01") + ns.Chat(obj97, "Wiz02B.scr:LewisTalk03") + flag73 = true +LABEL9: + ivar80 += 2 + goto LABEL10 +LABEL6: + ivar80 += 2 +LABEL10: + if !(ivar80 > 14) { + goto LABEL11 + } + ivar80 = 0 +LABEL11: + if !(fvar43 < 4333) { + goto LABEL12 + } + fvar41 = fvar37 + fvar43 = fvar39 + goto LABEL13 +LABEL12: + fvar41 -= 2 + fvar43 -= 2 +LABEL13: + if !(fvar49 < 4217) { + goto LABEL14 + } + fvar48 = fvar46 + fvar49 = fvar47 + goto LABEL15 +LABEL14: + fvar48 -= 2 + fvar49 -= 2 +LABEL15: + if ivar83 != 92 { + goto LABEL16 + } + fvar52 = ns.GetObjectX(obj97) + fvar53 = ns.GetObjectY(obj97) + fvar50 = ns.GetObjectX(obj96) + fvar51 = ns.GetObjectY(obj96) + ns.ObjectOff(obj98) + ns.Frozen(obj96, false) + ns.Frozen(obj97, false) + ns.MoveObject(obj96, fvar52, fvar53) + ns.MoveObject(obj97, fvar50, fvar51) + ns.CreatureGuard(obj97, ns.GetObjectX(obj97), ns.GetObjectY(obj97), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CreatureGuard(obj96, ns.GetObjectX(obj96), ns.GetObjectY(obj96), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL16: + ivar83 += 2 + if !(ivar83 > 152) { + goto LABEL17 + } + flag60 = true + flag59 = false + ns.SetQuestStatus(1, "FirstSwapComplete") + flag73 = false + ns.SetDialog(obj97, ns.NEXT, FrogTalk1Start, FrogTalk1End) + ns.StartDialog(obj97, ns.GetHost()) + goto LABEL2 +LABEL17: + ns.FrameTimer(2, FrogRoomStuff) +LABEL2: + if !(flag58 == true && flag59 == true) { + goto LABEL18 + } + ns.Effect(ns.LIGHTNING, fvar40, fvar41, fvar42, fvar43) + ns.Effect(ns.LIGHTNING, fvar44, fvar48, fvar45, fvar49) + ns.MoveWaypoint(wp18, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if ivar79 != 0 { + goto LABEL19 + } + ns.AudioEvent(ns.LightningBolt, wp18) + ivar79 += 2 + goto LABEL20 +LABEL19: + ivar79 += 2 +LABEL20: + if !(ivar79 > 8) { + goto LABEL21 + } + ivar79 = 0 +LABEL21: + if ivar80 != 0 { + goto LABEL22 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj96), ns.GetObjectY(obj96), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj97), ns.GetObjectY(obj97), 0, 0) + if !(ivar84 < 92) { + goto LABEL23 + } + if flag73 { + goto LABEL23 + } + ns.Chat(obj97, "Wiz02B.scr:LewisTalk03") + ns.Chat(obj96, "Wiz02B.scr:FrogTalk01") + flag73 = true +LABEL23: + if ivar84 != 92 { + goto LABEL24 + } + flag73 = false +LABEL24: + if !(ivar84 > 92 && ivar83 < 182) { + goto LABEL25 + } + if flag73 { + goto LABEL25 + } + ns.Chat(obj96, "Wiz02B.scr:FrogTalk01") + ns.Chat(obj97, "Wiz02B.scr:LewisTalk03") + flag73 = true +LABEL25: + ivar80 += 2 + goto LABEL26 +LABEL22: + ivar80 += 2 +LABEL26: + if !(ivar80 > 14) { + goto LABEL27 + } + ivar80 = 0 +LABEL27: + if !(fvar43 < 4333) { + goto LABEL28 + } + fvar41 = fvar37 + fvar43 = fvar39 + goto LABEL29 +LABEL28: + fvar41 -= 2 + fvar43 -= 2 +LABEL29: + if !(fvar49 < 4217) { + goto LABEL30 + } + fvar48 = fvar46 + fvar49 = fvar47 + goto LABEL31 +LABEL30: + fvar48 -= 2 + fvar49 -= 2 +LABEL31: + ivar84 += 2 + if !(ivar84 > 152) { + goto LABEL32 + } + flag61 = true + flag59 = false + ns.SetQuestStatus(1, "FirstReverseComplete") + goto LABEL18 +LABEL32: + ns.FrameTimer(2, FrogRoomStuff) +LABEL18: + if !(flag61 == true && flag63 == false) { + goto LABEL33 + } + LewisBookQuest() +LABEL33: + return +} +func FrogTalk1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:LewisTalk04") +} +func FrogTalk1End() { + ns.SetDialog(obj97, ns.NORMAL, FrogTalk2Start, FrogTalk2End) + ns.StartDialog(obj97, ns.GetHost()) +} +func FrogTalk2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:LewisTalk05") +} +func FrogTalk2End() { + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + flag58 = true + ns.CancelDialog(obj97) +} +func FrogTalk3Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:LewisTalk06") +} +func FrogTalk3End() { + ns.SetDialog(obj97, ns.NEXT, FrogTalk4Start, FrogTalk4End) + ns.WayPointGroupOn(gvar148) + ns.Wander(obj96) + ns.StartDialog(obj97, ns.GetHost()) +} +func FrogTalk4Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:LewisTalk07") +} +func FrogTalk4End() { + ns.SetDialog(obj97, ns.NORMAL, FrogTalk5Start, FrogTalk5End) + ns.StartDialog(obj97, ns.GetHost()) +} +func FrogTalk5Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:LewisTalk08") +} +func FrogTalk5End() { + if flag75 { + goto LABEL1 + } + flag75 = true + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) +LABEL1: + ns.SetDialog(obj97, ns.NORMAL, FrogTalk5Start, FrogTalk5End) +} +func TeacherBegin() { + ns.SetDialog(obj94, ns.NORMAL, TeacherTalkStart, TeacherTalkEnd) + ns.StartDialog(obj94, ns.GetHost()) +} +func TeacherTalkStart() { + ns.LookAtObject(obj94, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:TeacherTalk03") +} +func TeacherTalkEnd() { + ns.CancelDialog(obj94) +} +func MapSwitch() { + ns.MoveObject(ns.GetHost(), 4682, 5302) +} +func CreatureSetup() { + ns.SetOwner(ns.GetHost(), obj101) + ns.SetOwner(ns.GetHost(), obj96) + ns.SetOwner(ns.GetHost(), obj92) + ns.SetOwner(ns.GetHost(), obj97) + ns.SetOwner(ns.GetHost(), obj107) + ns.SetOwner(ns.GetHost(), obj95) + ns.SetOwner(ns.GetHost(), obj94) + LibrarySetup() +} +func TrapSpiderCheck() { + if !(ns.CurrentHealth(obj106) <= 0) { + goto LABEL1 + } + if !(ivar91 > 0) { + goto LABEL1 + } + ns.LookAtObject(obj106, ns.GetHost()) +LABEL1: + if !(ns.CurrentHealth(obj106) <= 0) { + goto LABEL2 + } + if !(ivar91 <= 0) { + goto LABEL2 + } + obj106 = ns.CreateObject("SmallAlbinoSpider", wp147) +LABEL2: + ns.FrameTimer(8, TrapSpiderCheck) +} +func SwapRoomCheck() { + if !(ns.CurrentHealth(obj105) > 0) { + goto LABEL1 + } + if !(ivar90 > 0) { + goto LABEL1 + } + ns.LookAtObject(obj105, ns.GetHost()) +LABEL1: + if !flag65 { + goto LABEL2 + } + if !(ns.CurrentHealth(obj105) <= 0) { + goto LABEL2 + } + if !(ivar90 > 0) { + goto LABEL2 + } + if gvar86 != 1 { + goto LABEL3 + } + obj105 = ns.CreateObject("SmallAlbinoSpider", wp145) + gvar86 = 2 + goto LABEL2 +LABEL3: + obj105 = ns.CreateObject("SmallAlbinoSpider", wp146) + gvar86 = 1 +LABEL2: + if ns.GetQuestStatus("SwapBookTaken") == 1 { + goto LABEL4 + } + if !(ivar90 <= 0) { + goto LABEL4 + } + ns.WallGroupOpen(gvar139) +LABEL4: + if ns.GetQuestStatus("SwapBookTaken") == 1 { + goto LABEL5 + } + ns.FrameTimer(15, SwapRoomCheck) +LABEL5: + return +} +func DropAmulet() { + gvar128 = ns.GetLastItem(ns.GetHost()) + for { + if gvar128 == 0 { + goto LABEL1 + } + gvar129 = ns.GetPreviousItem(gvar128) + if gvar128 != gvar10 { + goto LABEL2 + } + ns.Delete(gvar128) + LABEL2: + gvar128 = gvar129 + } +LABEL1: + ns.Blind() + ns.FrameTimer(60, MapSwitch) +} +func NoBubbles() { + ns.DestroyEveryChat() +} +func MapEntry() { + ns.UnBlind() + gvar10 = ns.Object("AmuletOfClarity") + gvar9 = ns.Object("Wiz02C:BookOfOblivion") + if ns.GetQuestStatus("InLetterboxMode") != 1 { + goto LABEL1 + } + ns.WideScreen(true) +LABEL1: + ns.Music(15, 100) + CheckIfReturningToMap() +} +func MapInitialize() { + obj92 = ns.Object("Main_Receptionist") + obj93 = ns.Object("Mystic") + obj95 = ns.Object("Horvath") + obj96 = ns.Object("Lewis") + obj97 = ns.Object("Frog") + obj98 = ns.Object("FrogMover") + obj99 = ns.Object("LewisFaceThis") + obj100 = ns.Object("LabEntrance") + obj101 = ns.Object("Zaris") + obj102 = ns.Object("BigSpider1") + obj103 = ns.Object("BigSpider2") + obj104 = ns.Object("BigSpider3") + gvar108 = ns.ObjectGroup("LibraryGroupA") + gvar109 = ns.ObjectGroup("LibraryGroupB") + obj130 = ns.Object("ElevatorChain") + obj110 = ns.Object("SDoor1") + obj111 = ns.Object("SDoor2") + obj112 = ns.Object("ArchiveGate1") + obj113 = ns.Object("ArchiveGate2") + obj114 = ns.Object("ArchiveDoor1") + obj135 = ns.Object("ArchiveDoorChain") + obj115 = ns.Object("SouthHallDoor1") + obj116 = ns.Object("SouthHallDoor2") + obj117 = ns.Object("SouthDoorUp1") + obj118 = ns.Object("SouthDoorUp2") + obj119 = ns.Object("NorthDoor1") + obj120 = ns.Object("NorthDoor2") + obj122 = ns.Object("VaultDoor") + obj121 = ns.Object("ClassDoor") + obj123 = ns.Object("BookCase1") + obj124 = ns.Object("BookCase2") + obj131 = ns.Object("Mover1") + obj132 = ns.Object("Mover2") + obj107 = ns.Object("Receptionist1") + obj125 = ns.Object("VaultKey") + obj126 = ns.Object("LightBook") + obj94 = ns.Object("Teacher") + obj12 = ns.Object("SwapBook") + obj133 = ns.Object("HorvathBookcaseMover1") + obj134 = ns.Object("HorvathBookcaseMover2") + gvar136 = ns.ObjectGroup("HecubahTriggers") + gvar137 = ns.ObjectGroup("SwapTriggers") + gvar140 = ns.WallGroup("SwapWalls") + gvar138 = ns.WallGroup("LabWalls") + gvar139 = ns.WallGroup("SpiderWalls") + gvar141 = ns.WallGroup("ClassSecretWalls") + gvar142 = ns.WallGroup("HorvathWalls") + wp18 = ns.Waypoint("PlayerSounds") + wp143 = ns.Waypoint("TeacherSounds") + wp144 = ns.Waypoint("LibraryExitWP") + wp145 = ns.Waypoint("SpiderWP1") + wp146 = ns.Waypoint("SpiderWP2") + wp147 = ns.Waypoint("TrapSpiderWP") + gvar148 = ns.WaypointGroup("FrogWaypoints") + gvar149 = ns.WaypointGroup("ArchivistToGateWP") + gvar150 = ns.WaypointGroup("ArchivistGoBackWP") + fvar40 = fvar36 + fvar41 = fvar37 + fvar42 = fvar38 + fvar43 = fvar39 + fvar48 = fvar46 + fvar49 = fvar47 + ns.WayPointGroupOff(gvar148) + ns.WayPointGroupOff(gvar149) + ns.WayPointGroupOff(gvar150) + ns.ObjectOn(obj98) + obj105 = ns.CreateObject("SmallAlbinoSpider", wp145) + obj106 = ns.CreateObject("SmallAlbinoSpider", wp147) + ns.LockDoor(obj100) + ns.LockDoor(obj110) + ns.LockDoor(obj111) + ns.LockDoor(obj115) + ns.LockDoor(obj116) + ns.LockDoor(obj117) + ns.LockDoor(obj118) + ns.LockDoor(obj119) + ns.LockDoor(obj120) + ns.LockDoor(obj121) + ns.LockDoor(obj112) + ns.LockDoor(obj113) + if ns.GetQuestStatus("MainReceptionistTalked") == 1 { + goto LABEL1 + } + ns.SetQuestStatus(0, "MainReceptionistTalked") + ns.SetDialog(obj92, ns.NORMAL, MainReceptionistGreetingStart, MainReceptionistGreetingEnd) +LABEL1: + ns.SetDialog(obj107, ns.NORMAL, LibrarianTalkStart, LibrarianTalkEnd) + ns.SetDialog(obj96, ns.NORMAL, LewisIntroStart, LewisIntroEnd) + if ns.GetQuestStatus("HorvathGaveAmuletQuest") != 1 { + goto LABEL2 + } + ns.SetDialog(obj95, ns.NORMAL, HorvathWaitingStart, HorvathWaitingEnd) + goto LABEL3 +LABEL2: + ns.SetDialog(obj95, ns.NEXT, HorvathGivesTaskStart, HorvathGivesTaskEnd) +LABEL3: + ns.StoryPic(obj92, "WizardGuard1Pic") + ns.StoryPic(obj96, "WizardGuard2Pic") + ns.StoryPic(obj101, "WizardGuard1Pic") + ns.StoryPic(obj97, "FrogPic") + ns.StoryPic(obj94, "WizardGuard2Pic") + ns.StoryPic(obj95, "HorvathPic") + ns.ObjectGroupOff(gvar108) + ns.ObjectGroupOff(gvar109) + ns.FrameTimer(1, CreatureSetup) + CheckIfReturningToMap() +} +func PlayerDeath() { + ns.DeathScreen(2) +} +func OnEvent(typ string) { + switch typ { + case "MapEntry": + MapEntry() + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz02c/dummy_test.go b/examples/wiz02c/dummy_test.go new file mode 100644 index 0000000..2865203 --- /dev/null +++ b/examples/wiz02c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz02c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz02c/wiz02c.go b/examples/wiz02c/wiz02c.go new file mode 100644 index 0000000..7b09945 --- /dev/null +++ b/examples/wiz02c/wiz02c.go @@ -0,0 +1,668 @@ +package wiz02c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + gvar20 ns.ObjectGroupID + gvar21 ns.WallGroupID + gvar22 ns.WallGroupID + gvar23 ns.WallGroupID + gvar24 ns.WallGroupID + gvar25 ns.WallGroupID + gvar26 ns.WallGroupID + gvar27 ns.WallGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + gvar30 ns.WallGroupID + flag31 bool + flag32 bool + flag33 bool + flag34 bool + flag35 bool + flag36 bool + flag37 bool + flag38 bool + flag39 bool + flag40 bool + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + gvar49 ns.ObjectGroupID + gvar50 ns.ObjectGroupID + gvar51 ns.ObjectGroupID + flag52 bool + flag53 bool + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + gvar67 ns.WallGroupID + gvar68 ns.WallGroupID + gvar69 ns.WallGroupID + gvar70 ns.WallGroupID + gvar71 ns.WallGroupID + gvar72 ns.WallGroupID + gvar73 ns.WallGroupID + flag74 bool + flag75 bool + flag76 bool + flag77 bool + flag78 bool + flag79 bool + flag80 bool + flag81 bool + flag82 bool + flag83 bool + flag84 bool + fvar85 float32 + fvar86 float32 +) + +func init() { + flag31 = false + flag32 = false + flag33 = false + flag34 = false + flag35 = false + flag36 = false + flag37 = false + flag38 = false + flag39 = false + flag40 = false + flag52 = false + flag53 = false + flag74 = false + flag75 = false + flag76 = false + flag77 = false + flag78 = false + flag79 = false + flag80 = false + flag81 = false + flag82 = true + flag83 = false + flag84 = false +} +func BookcaseSetup() { + obj4 = ns.Object("Bookcase1AMover") + obj5 = ns.Object("Bookcase1BMover") + obj6 = ns.Object("Bookcase2AMover") + obj7 = ns.Object("Bookcase2BMover") + obj8 = ns.Object("Bookcase3AMover") + obj9 = ns.Object("Bookcase3BMover") + obj10 = ns.Object("Bookcase4AMover") + obj11 = ns.Object("Bookcase4BMover") + obj12 = ns.Object("Bookcase5AMover") + obj13 = ns.Object("Bookcase5BMover") + obj14 = ns.Object("Bookcase6AMover") + obj15 = ns.Object("Bookcase7AMover") + obj16 = ns.Object("Bookcase7BMover") + obj17 = ns.Object("Orb1Mover") + obj18 = ns.Object("Orb1BookcaseMover") + gvar20 = ns.ObjectGroup("CreatureGroup1") + gvar21 = ns.WallGroup("SecretWalls1") + gvar22 = ns.WallGroup("SecretWalls2") + gvar23 = ns.WallGroup("SecretWalls3") + gvar24 = ns.WallGroup("SecretWalls4") + gvar25 = ns.WallGroup("SecretWalls5") + gvar26 = ns.WallGroup("SecretWalls6") + gvar27 = ns.WallGroup("SecretWalls7") + gvar28 = ns.WallGroup("SecretWalls10") + gvar29 = ns.WallGroup("BreakableWalls1") + gvar30 = ns.WallGroup("Orb1Walls") + ns.ObjectOn(obj17) +} +func ActivateBookcase1() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp42) + ns.ObjectOn(obj4) + ns.ObjectOn(obj5) + ns.WallGroupOpen(gvar21) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar29) +} +func ActivateBookcase2() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp42) + ns.ObjectOn(obj6) + ns.ObjectOn(obj7) + ns.WallGroupOpen(gvar22) + ns.NoWallSound(false) +} +func ActivateBookcase3() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp42) + ns.ObjectOn(obj8) + ns.ObjectOn(obj9) + ns.WallGroupOpen(gvar23) + ns.NoWallSound(false) +} +func ActivateBookcase4() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp42) + ns.ObjectOn(obj10) + ns.ObjectOn(obj11) + ns.WallGroupOpen(gvar24) + ns.NoWallSound(false) +} +func ActivateBookcase5() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp42) + ns.ObjectOn(obj12) + ns.ObjectOn(obj13) + ns.WallGroupOpen(gvar25) + ns.NoWallSound(false) + if flag32 { + goto LABEL1 + } + flag32 = true + ns.PauseObject(ns.GetCaller(), 30) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.NecromancerTaunt, wp42) +LABEL1: + return +} +func ActivateBookcase6() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp42) + ns.ObjectOn(obj14) + ns.WallGroupOpen(gvar26) + ns.NoWallSound(false) +} +func ActivateBookcase7() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp42) + ns.ObjectOn(obj15) + ns.ObjectOn(obj16) + ns.WallGroupOpen(gvar27) + ns.NoWallSound(false) +} +func OpenOrb1Bookcase() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretWallWoodOpen, wp42) + ns.WallGroupOpen(gvar30) + ns.ObjectOn(obj18) + ns.NoWallSound(false) +LABEL1: + return +} +func Orb1Secret() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") +LABEL1: + return +} +func OpenWalls() { + ns.WallGroupOpen(gvar28) +} +func CloseWalls() { + ns.WallGroupClose(gvar28) +} +func SetPieceSetup() { + obj19 = ns.Object("Necromancer") + obj45 = ns.Object("NecroTemp") + obj48 = ns.Object("ThePit") + gvar50 = ns.ObjectGroup("Piece1Triggers") + gvar51 = ns.ObjectGroup("Piece2Triggers") + gvar49 = ns.ObjectGroup("NecroRunTriggers") + wp54 = ns.Waypoint("NecroWP1") + wp41 = ns.Waypoint("NecroExitWP1") + wp55 = ns.Waypoint("SummonWP1") + wp56 = ns.Waypoint("SummonWP2") + wp57 = ns.Waypoint("NecroPitWP") + wp42 = ns.Waypoint("PlayerSounds") + ns.StoryPic(obj19, "NecromancerPic") + ns.FrameTimer(1, DisableStuff) +} +func InitScript() { + obj58 = ns.Object("StatueN") + obj59 = ns.Object("StatueS") + obj60 = ns.Object("StatueE") + obj61 = ns.Object("StatueW") + obj62 = ns.Object("StatueTriggerN") + obj64 = ns.Object("StatueTriggerE") + obj63 = ns.Object("StatueTriggerW") + obj65 = ns.Object("WallLight1") + obj66 = ns.Object("WallLight2") + gvar67 = ns.WallGroup("SpikeWalls1") + gvar68 = ns.WallGroup("SpikeWalls2") + gvar69 = ns.WallGroup("StatueWalls") + gvar70 = ns.WallGroup("EastWalls") + gvar71 = ns.WallGroup("EastExitWalls") + gvar72 = ns.WallGroup("WestWalls") + gvar73 = ns.WallGroup("WestExitWalls") + fvar85 = ns.GetObjectX(obj59) + fvar86 = ns.GetObjectY(obj59) +} +func LastSetup() { + ns.ObjectGroupOff(gvar20) +} +func MapEntry() { + ns.UnBlind() +} +func MapInitialize() { + obj44 = ns.Object("BookOfOblivion") + wp43 = ns.Waypoint("SecretSounds") + BookcaseSetup() + SetPieceSetup() + InitScript() + ns.FrameTimer(1, LastSetup) +} +func PlayerDeath() { + ns.DeathScreen(2) +} +func DisableStuff() { + ns.ObjectOff(obj48) +} +func Piece1Start() { + ns.ObjectGroupOff(gvar50) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.LookAtObject(ns.GetHost(), ns.ObjectID(wp54)) // FIXME + ns.MoveObject(obj19, 1214, 4744) + ns.Move(obj19, wp54) +} +func NecroSeePlayer() { + if !ns.IsCaller(obj19) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj19, true) + ns.CreatureIdle(obj19) + ns.LookAtObject(obj19, ns.GetHost()) + ns.Chat(obj19, "Wiz02:Necromancer02") + ns.SecondTimer(2, SummonSpiders) +LABEL1: + return +} +func SummonSpiders() { + ns.CastSpellObjectLocation(ns.SPELL_SUMMON_SPIDER, obj19, ns.GetWaypointX(wp55), ns.GetWaypointY(wp55)) + ns.CastSpellLocationLocation(ns.SPELL_SUMMON_SPIDER, ns.GetObjectX(obj19), ns.GetObjectY(obj19), ns.GetWaypointX(wp56), ns.GetWaypointY(wp56)) +} +func Spider1Trigger() { + if ns.IsCaller(obj19) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + obj46 = ns.GetCaller() + ns.Frozen(obj46, true) + ns.CreatureIdle(obj46) + ns.LookAtObject(obj46, ns.GetHost()) + ns.Frozen(obj19, false) + ns.SetOwner(obj19, obj46) + ns.Move(obj19, wp41) +LABEL1: + return +} +func Spider2Trigger() { + if ns.IsCaller(obj19) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + obj47 = ns.GetCaller() + ns.Frozen(obj47, true) + ns.CreatureIdle(obj47) + ns.LookAtObject(obj47, ns.GetHost()) + ns.Frozen(obj19, false) + ns.SetOwner(obj19, obj47) + ns.Move(obj19, wp41) +LABEL1: + return +} +func SetPiece1Over() { + ns.ObjectOff(ns.GetTrigger()) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj46, false) + ns.Frozen(obj47, false) + ns.SetOwner(obj46, obj47) + ns.MoveObject(obj19, 3507, 3496) + ns.CreatureIdle(obj19) + ns.ObjectOff(obj19) + ns.ObjectGroupOn(gvar20) +} +func PlayerFollowCheck() { + ns.ObjectGroupOff(gvar51) + ns.MoveObject(obj19, 3874, 3383) + flag52 = true + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj19) + ns.ObjectOn(obj19) + ns.FrameTimer(1, NecroGo) +} +func NecroRun() { + ns.ObjectGroupOff(gvar49) + ns.ObjectOn(obj19) + ns.FrameTimer(1, NecroGo) +} +func NecroGo() { + ns.Wander(obj19) +} +func Piece2Start() { + if !flag52 { + goto LABEL1 + } + if !ns.IsCaller(obj19) { + goto LABEL2 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj19, true) + ns.CreatureIdle(obj19) + ns.LookAtObject(obj19, ns.GetHost()) + ns.SetDialog(obj19, ns.NORMAL, NecroTauntStart, NecroTauntEnd) + ns.StartDialog(obj19, ns.GetHost()) +LABEL2: + goto LABEL3 +LABEL1: + ns.FrameTimer(1, Piece2Start) +LABEL3: + return +} +func NecroWalkOnPit() { + ns.Frozen(obj19, false) + ns.Move(obj19, wp57) +} +func NecroScream1() { + if flag53 { + goto LABEL1 + } + if !ns.IsCaller(obj19) { + goto LABEL1 + } + flag53 = true + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.WallDestroyed, wp42) + ns.Chat(obj19, "Wiz02:Necromancer05") +LABEL1: + return +} +func NecroScream2() { + if !ns.IsCaller(obj19) { + goto LABEL1 + } + ns.DestroyEveryChat() + ns.AudioEvent(ns.TrollRecognize, wp42) + ns.MoveObject(obj19, 3935, 2442) + ns.Chat(obj48, "Wiz02:Necromancer06") + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.FrameTimer(1, KillNecroTemp) +LABEL1: + return +} +func NecroTauntStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02:Necromancer04") +} +func NecroTauntEnd() { + ns.CancelDialog(obj19) + NecroWalkOnPit() +} +func CheckForBook() { + ns.JournalEdit(ns.GetHost(), "GetNecromancer", 4) + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagCapture, wp42) + ns.GiveXp(ns.GetHost(), 250) + ns.JournalEntry(ns.GetHost(), "ArchivistBook", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +} +func KillNecroTemp() { + ns.Damage(obj45, 0, 500, 0) +} +func OpenSpikeWalls1() { + if flag74 { + goto LABEL1 + } + flag74 = true + ns.WallGroupOpen(gvar67) + ns.MoveObject(obj65, 1871, 3998) + goto LABEL2 +LABEL1: + ns.WallGroupOpen(gvar68) + ns.MoveObject(obj66, 1818, 3928) +LABEL2: + return +} +func OpenSpikeWalls2() { + if flag74 { + goto LABEL1 + } + flag74 = true + ns.WallGroupOpen(gvar67) + ns.MoveObject(obj65, 1871, 3998) + goto LABEL2 +LABEL1: + ns.WallGroupOpen(gvar68) + ns.MoveObject(obj66, 1818, 3928) +LABEL2: + return +} +func TriggerNHit() { + flag76 = true + ns.MoveObject(obj59, 1957, 3768) + ns.MoveObject(obj61, 1957, 3768) + ns.MoveObject(obj60, 1957, 3768) + ns.MoveObject(obj58, fvar85, fvar86) + ns.WallGroupOpen(gvar69) + ns.WallGroupClose(gvar72) + ns.WallGroupClose(gvar70) +} +func TriggerEHit() { + flag77 = true + ns.MoveObject(obj59, 1957, 3768) + ns.MoveObject(obj61, 1957, 3768) + ns.MoveObject(obj58, 1957, 3768) + ns.MoveObject(obj60, fvar85, fvar86) + ns.WallGroupOpen(gvar70) + ns.WallGroupClose(gvar69) + ns.WallGroupClose(gvar72) +} +func TriggerWHit() { + flag78 = true + ns.MoveObject(obj59, 1957, 3768) + ns.MoveObject(obj60, 1957, 3768) + ns.MoveObject(obj58, 1957, 3768) + ns.MoveObject(obj61, fvar85, fvar86) + ns.WallGroupOpen(gvar72) + ns.WallGroupClose(gvar70) + ns.WallGroupClose(gvar69) +} +func TriggerNRelease() { + flag76 = false + if !flag79 { + goto LABEL1 + } + flag79 = false + ns.WallGroupClose(gvar69) + ns.WallGroupClose(gvar70) + ns.WallGroupClose(gvar72) +LABEL1: + return +} +func TriggerWRelease() { + flag78 = false + if !flag81 { + goto LABEL1 + } + flag81 = false + ns.WallGroupClose(gvar72) + ns.WallGroupClose(gvar69) + ns.WallGroupClose(gvar70) +LABEL1: + return +} +func TriggerERelease() { + flag77 = false + if !flag80 { + goto LABEL1 + } + flag79 = false + ns.WallGroupClose(gvar70) + ns.WallGroupClose(gvar69) + ns.WallGroupClose(gvar72) +LABEL1: + return +} +func OpenEastExitWalls() { + ns.WallGroupOpen(gvar71) +} +func CloseEastExitWalls() { + ns.WallGroupClose(gvar71) +} +func OpenWestExitWalls() { + ns.WallGroupOpen(gvar73) +} +func CloseWestExitWalls() { + ns.WallGroupClose(gvar73) +} +func OpenPuzzleWalls() { + ns.WallGroupOpen(gvar69) + ns.WallGroupOpen(gvar67) + ns.WallGroupOpen(gvar68) +} +func SecretXP1() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + if flag83 { + goto LABEL1 + } + flag83 = true + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +LABEL1: + return +} +func SecretXP2() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + if flag84 { + goto LABEL1 + } + flag84 = true + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +LABEL1: + return +} +func HallSecret1() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 25) +LABEL1: + return +} +func HallSecret2() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 25) +LABEL1: + return +} +func SuperSecretXP() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +LABEL1: + return +} +func SuperSecret2XP() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "MapEntry": + MapEntry() + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz03a/dummy_test.go b/examples/wiz03a/dummy_test.go new file mode 100644 index 0000000..8ab7110 --- /dev/null +++ b/examples/wiz03a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz03a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz03a/wiz03a.go b/examples/wiz03a/wiz03a.go new file mode 100644 index 0000000..48986ba --- /dev/null +++ b/examples/wiz03a/wiz03a.go @@ -0,0 +1,480 @@ +package wiz03a + +import ( + "strconv" + + "github.com/noxworld-dev/noxscript/ns/v3" +) + +var ( + obj4 ns.ObjectID + wp5 ns.WaypointID + wp6 [70]ns.WaypointID + obj7 ns.ObjectID + obj8 ns.ObjectID + gvar9 ns.ObjectGroupID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + wp14 ns.WaypointID + obj15 ns.ObjectID + obj16 ns.ObjectID + gvar17 ns.WallGroupID + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + wp23 ns.WaypointID + wp24 ns.WaypointID + obj25 ns.ObjectID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + wp29 ns.WaypointID + obj30 ns.ObjectID + gvar31 ns.ObjectID + gvar32 ns.ObjectID + gvar33 ns.ObjectGroupID + obj34 ns.ObjectID + obj35 ns.ObjectID + gvar36 ns.ObjectGroupID + gvar37 ns.ObjectGroupID + gvar38 ns.WallGroupID + wp39 ns.WaypointID + gvar40 int + gvar41 int + gvar42 int + obj43 ns.ObjectID + gvar44 ns.ObjectGroupID + obj45 ns.ObjectID + gvar46 ns.ObjectGroupID + gvar47 int + gvar48 [6]int + gvar49 int + gvar50 int +) + +func init() { + gvar18 = 0 + gvar19 = 1 + gvar20 = 2 + gvar21 = 3 + gvar22 = gvar18 + gvar40 = 0 + gvar41 = 1 + gvar42 = gvar40 +} +func ArcherIdle() { + ns.AggressionLevel(obj4, 1) + ns.CreatureIdle(obj4) +} +func MissileAttackBarrel() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp5) + v1 = ns.GetWaypointY(wp5) + ns.HitFarLocation(obj4, v0, v1) +} +func AttackBarrel() { + ns.FrameTimer(3, MissileAttackBarrel) +} +func FlamesCreate() { + var ( + v0 int + v1 int + ) + v0 = 0 + for { + if !(v0 < 70) { + goto LABEL1 + } + v1 = v0 % 3 + if v1 == 0 { + goto LABEL2 + } + if v1 == 1 { + goto LABEL3 + } + if v1 == 2 { + goto LABEL4 + } + goto LABEL5 + LABEL2: + ns.CreateObject("MediumFlame", wp6[v0]) + goto LABEL5 + LABEL3: + ns.CreateObject("Flame", wp6[v0]) + goto LABEL5 + LABEL4: + ns.CreateObject("SmallFlame", wp6[v0]) + goto LABEL5 + LABEL5: + v0 += 1 + } +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(3) +} +func HorvathTalkStart() { + var v0 int + if !ns.HasItem(ns.GetHost(), ns.Object("Wiz03b:AmuletofTeleportation")) { + goto LABEL1 + } + gvar22 = gvar21 +LABEL1: + v0 = gvar22 + if v0 == gvar18 { + goto LABEL2 + } + if v0 == gvar19 { + goto LABEL3 + } + if v0 == gvar20 { + goto LABEL4 + } + if v0 == gvar21 { + goto LABEL5 + } + goto LABEL6 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Wiz03a:HorvathIntro") + goto LABEL6 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "Wiz03a:HorvathPre") + goto LABEL6 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "Wiz03a:HorvathPre2") + goto LABEL6 +LABEL5: + ns.TellStory(ns.SwordsmanHurt, "Wiz03a:HorvathFinish") + goto LABEL6 + ns.Blind() + ns.FrameTimer(60, PlayerExit) + goto LABEL6 +LABEL6: + return +} +func HorvathTalkEnd() { + var v0 int + v0 = gvar22 + if v0 == gvar18 { + goto LABEL1 + } + if v0 == gvar19 { + goto LABEL2 + } + if v0 == gvar21 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.ObjectOn(obj16) + ns.JournalEntry(ns.GetHost(), "Wiz03aGetAmulet", 2) + ns.Print("Con01a:NewJournalEntry") + gvar22 = gvar19 + goto LABEL4 +LABEL2: + gvar22 = gvar20 + goto LABEL4 +LABEL3: + ns.Frozen(ns.GetHost(), true) + ns.JournalEdit(ns.GetHost(), "Journal:Wiz03aGetAmulet", 4) + gvar31 = ns.GetLastItem(ns.GetHost()) + for { + if gvar31 == 0 { + goto LABEL5 + } + gvar32 = ns.GetPreviousItem(gvar31) + if gvar31 != ns.Object("Wiz03b:AmuletofTeleportation") { + goto LABEL6 + } + ns.Delete(gvar31) + LABEL6: + gvar31 = gvar32 + } +LABEL5: + ns.CancelDialog(obj10) + ns.Blind() + ns.FrameTimer(60, PlayerExit) + goto LABEL4 +LABEL4: + return +} +func AirshipCaptainAppear() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp26) + v1 = ns.GetWaypointY(wp26) + v2 = ns.GetWaypointX(wp27) + v3 = ns.GetWaypointY(wp27) + ns.MoveObject(obj25, v0, v1) + ns.CreatureGuard(obj25, v0, v1, v2, v3, 500) +} +func PlayerExit() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp28) + v1 = ns.GetWaypointY(wp28) + ns.MoveObject(ns.GetHost(), v0, v1) + ns.Frozen(ns.GetHost(), false) +} +func MissionStart() { + ns.ObjectOff(obj8) +} +func BrennethSpeaks() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetObjectX(obj35) + v1 = ns.GetObjectY(obj35) + v2 = ns.GetObjectX(ns.GetHost()) + v3 = ns.GetObjectY(ns.GetHost()) + if !(ns.Distance(v0, v1, v2, v3) < 230) { + goto LABEL1 + } + ns.LookAtObject(obj35, ns.GetHost()) + ns.StartDialog(obj35, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Wiz03a:BrennethExplains") + goto LABEL2 +LABEL1: + ns.FrameTimer(30, BrennethSpeaks) +LABEL2: + return +} +func BrennethTalkStart() { + var v0 int + v0 = gvar42 + if v0 == gvar41 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.LookAtObject(obj35, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Wiz03a:BrennethEnd") + goto LABEL2 +LABEL2: + return +} +func BrennethTalkEnd() { + var v0 int + v0 = gvar42 + if v0 == gvar40 { + goto LABEL1 + } + if v0 == gvar41 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Move(obj35, wp39) + ns.CreatureGuard(obj35, 4938, 1032, 4923, 1078, 500) + gvar42 = gvar41 + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func MapInitialize() { + var v0 int + obj8 = ns.Object("MissionTrig") + obj10 = ns.Object("Horvath") + gvar9 = ns.ObjectGroup("HorvathTrigGroup") + ns.StoryPic(obj10, "HorvathPic") + ns.SetDialog(obj10, ns.NORMAL, HorvathTalkStart, HorvathTalkEnd) + obj11 = ns.Object("HorvathDoor1") + obj12 = ns.Object("HorvathDoor2") + ns.SetOwner(ns.GetHost(), obj10) + obj13 = ns.Object("HorvathBookcaseMover1") + obj15 = ns.Object("HorvathBookcaseMover2") + obj16 = ns.Object("HorvathBookcaseTrigger") + ns.LockDoor(obj11) + ns.LockDoor(obj12) + wp23 = ns.Waypoint("JournalSoundWP") + wp14 = ns.Waypoint("HorvathBookcase1WP") + obj25 = ns.Object("Airship_Captain") + wp26 = ns.Waypoint("AirshipCaptainWP") + wp27 = ns.Waypoint("AirshipCaptainLook") + ns.SetOwner(ns.GetHost(), obj25) + gvar38 = ns.WallGroup("InvisibleWallGroup") + gvar33 = ns.ObjectGroup("ElevatorTrigGroup") + obj34 = ns.Object("CellarElevator") + obj35 = ns.Object("Brenneth") + gvar36 = ns.ObjectGroup("BrennethGroup") + ns.GroupSetOwner(ns.GetHost(), gvar36) + ns.StoryPic(obj35, "MalePic8") + ns.SetDialog(obj35, ns.NORMAL, BrennethTalkStart, BrennethTalkEnd) + wp39 = ns.Waypoint("BrennethWP") + gvar37 = ns.ObjectGroup("GearGroup") + obj43 = ns.Object("Bandit01") + ns.Damage(obj43, 0, 100, 5) + gvar46 = ns.ObjectGroup("MonsterGroup1") + ns.ObjectGroupOff(gvar46) + gvar44 = ns.ObjectGroup("MissionExitGroup") + obj45 = ns.Object("Wiz03b:AmuletofTeleportation") + gvar17 = ns.WallGroup("HorvathWallGroup") + wp28 = ns.Waypoint("ExitWP") + wp29 = ns.Waypoint("Wiz03bExitWP") + obj30 = ns.Object("ExitTrig") + obj4 = ns.Object("Archer01") + wp5 = ns.Waypoint("Barrel1WP") + obj7 = ns.Object("Barrel01") + wp24 = ns.Waypoint("Secret01WP") + ns.StartupScreen(3) + v0 = 0 + for { + if !(v0 < 70) { + goto LABEL1 + } + wp6[v0] = ns.Waypoint(strconv.Itoa(v0+1) + "WP") + v0 += 1 + } +LABEL1: + return +} +func MapEntry() { + ns.UnBlind() + ns.ObjectOn(obj30) +} +func HorvathPickup() { + ns.Pickup(obj10, ns.Object("Wiz03b:AmuletofTeleportation")) +} +func OpenHorvathWalls() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(obj13) + ns.ObjectOn(obj15) + ns.WallGroupOpen(gvar17) +} +func QuestSwitch() { + if !ns.HasItem(ns.GetHost(), ns.Object("Wiz03b:AmuletofTeleportation")) { + goto LABEL1 + } + ns.MoveObject(obj35, 5457, 1685) + ns.ObjectGroupOn(gvar37) + ns.ObjectOn(obj34) + AirshipCaptainAppear() +LABEL1: + return +} +func QuestXP() { + if !ns.HasItem(ns.GetHost(), ns.Object("Wiz03b:AmuletofTeleportation")) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.GiveXp(ns.GetHost(), 1000) + ns.AudioEvent(ns.FlagDrop, wp23) + ns.Music(0, 100) +LABEL1: + return +} +func DisableElevator() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar38) + ns.NoWallSound(false) + ns.ObjectOff(obj34) + ns.ObjectGroupOff(gvar37) + ns.ObjectGroupOff(gvar33) + ns.CreatureFollow(obj35, ns.GetHost()) + ns.AudioEvent(ns.WoodenArmorBreak, wp39) + ns.AudioEvent(ns.MetalArmorBreak, wp39) + ns.AudioEvent(ns.WallDestroyed, wp39) + ns.AudioEvent(ns.LightningWand, wp39) + ns.Effect(ns.SMOKE_BLAST, 4953, 1047, 4953, 1047) + ns.Effect(ns.BLUE_SPARKS, 4953, 1047, 4953, 1047) + BrennethSpeaks() +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MonsterGroup1Enable() { + ns.ObjectGroupOn(gvar46) +} +func PlayerWiz03bExit() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp29) + v1 = ns.GetWaypointY(wp29) + ns.MoveObject(ns.GetHost(), v0, v1) +} +func FreezePlayer() { + ns.Frozen(ns.GetHost(), true) +} +func GotoWiz03b() { + ns.ObjectOff(obj30) + ns.Blind() + ns.FrameTimer(30, FreezePlayer) + ns.FrameTimer(60, PlayerWiz03bExit) +} +func QuestCheck() { + if !ns.HasItem(ns.GetHost(), ns.Object("Wiz03b:AmuletofTeleportation")) { + goto LABEL1 + } + ns.Chat(ns.GetHost(), "I got it!") +LABEL1: + return +} +func Secret50XP() { + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp24) +} +func Award100XP() { + ns.GiveXp(ns.GetHost(), 100) +} +func PlaySubMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(19, 100) +LABEL1: + return +} +func PlayNoMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(0, 100) +LABEL1: + return +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(22, 100) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz03b/dummy_test.go b/examples/wiz03b/dummy_test.go new file mode 100644 index 0000000..5d237be --- /dev/null +++ b/examples/wiz03b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz03b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz03b/wiz03b.go b/examples/wiz03b/wiz03b.go new file mode 100644 index 0000000..8db378a --- /dev/null +++ b/examples/wiz03b/wiz03b.go @@ -0,0 +1,382 @@ +package wiz03b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + gvar5 ns.ObjectGroupID + wp6 ns.WaypointID + gvar7 ns.ObjectGroupID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + gvar14 ns.ObjectGroupID + gvar15 ns.ObjectGroupID + gvar16 ns.WallGroupID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + gvar27 ns.ObjectGroupID + wp28 ns.WaypointID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + obj39 ns.ObjectID + obj40 ns.ObjectID + gvar41 ns.ObjectGroupID + gvar42 ns.ObjectGroupID + gvar43 ns.ObjectGroupID + obj44 ns.ObjectID + obj45 ns.ObjectID + gvar46 ns.ObjectGroupID + obj47 ns.ObjectID + gvar48 ns.WallGroupID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + gvar52 ns.WallGroupID + obj53 ns.ObjectID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + gvar57 ns.ObjectGroupID + ivar58 int +) + +func init() { + ivar58 = 0 +} +func PlayerDeath() { + ns.DeathScreen(3) +} +func TauntBegin() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar16) + ns.NoWallSound(false) + ns.ObjectGroupOn(gvar5) + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar15) + ns.WideScreen(true) + ns.Move(obj4, wp6) + ns.ObjectOn(obj12) + ns.ObjectGroupOff(gvar7) +} +func Taunt() { + ns.StartDialog(obj4, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Wiz03b:RogueLeader") + ns.ObjectOff(obj12) +} +func Unfreeze() { + ns.Music(27, 100) + ns.UnlockDoor(obj13) + ns.CancelDialog(obj4) + ns.ClearOwner(obj4) + ns.ClearOwner(obj8) + ns.ClearOwner(obj9) + ns.ClearOwner(obj10) + ns.ClearOwner(obj11) + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar15) + ns.GroupAggressionLevel(gvar14, 0.83) +} +func GilgoreTalkEnd() { + ns.WideScreen(false) + ns.FrameTimer(60, Unfreeze) +} +func GilgoreTalkStart() { +} +func DisableElevator() { + if ns.GetElevatorStatus(obj39) != 2 { + goto LABEL1 + } + ns.ObjectOff(obj39) + goto LABEL2 +LABEL1: + ns.FrameTimer(1, DisableElevator) +LABEL2: + return +} +func BanditDeath() { + ivar58 += 1 + if !(ivar58 >= 8) { + goto LABEL1 + } + ns.Music(16, 100) +LABEL1: + return +} +func PlaySubMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(16, 100) +LABEL1: + return +} +func PlayActionMusic() { + ns.Music(27, 100) +} +func MapInitialize() { + obj17 = ns.Object("Swordsman01") + obj18 = ns.Object("Swordsman02") + obj19 = ns.Object("Swordsman03") + obj20 = ns.Object("Swordsman04") + obj21 = ns.Object("Swordsman05") + obj22 = ns.Object("Archer01") + obj23 = ns.Object("Archer02") + obj24 = ns.Object("Archer03") + obj25 = ns.Object("Archer04") + obj26 = ns.Object("Archer05") + wp28 = ns.Waypoint("AmbushWP01") + wp29 = ns.Waypoint("AmbushWP02") + wp30 = ns.Waypoint("AmbushWP03") + wp31 = ns.Waypoint("AmbushWP04") + wp32 = ns.Waypoint("AmbushWP05") + wp33 = ns.Waypoint("AmbushWP06") + wp34 = ns.Waypoint("AmbushWP07") + wp35 = ns.Waypoint("AmbushWP08") + wp36 = ns.Waypoint("AmbushWP09") + wp37 = ns.Waypoint("AmbushWP10") + wp38 = ns.Waypoint("AmbushLook") + obj39 = ns.Object("AmbushElevator") + obj40 = ns.Object("AmbushElevator2") + gvar41 = ns.ObjectGroup("AmbushTrigGroup") + gvar27 = ns.ObjectGroup("AmbushMonsterGroup") + gvar42 = ns.ObjectGroup("WaspGroup") + ns.GroupWander(gvar42) + gvar43 = ns.ObjectGroup("Wasp2Group") + ns.GroupWander(gvar43) + gvar46 = ns.ObjectGroup("BoulderTrigGroup") + gvar48 = ns.WallGroup("RogueWallGroup") + wp49 = ns.Waypoint("BoulderWP") + obj45 = ns.Object("Boulder") + obj47 = ns.Object("RogueDoor") + wp50 = ns.Waypoint("IronBlockWP") + wp51 = ns.Waypoint("SoundWP") + gvar52 = ns.WallGroup("RogueSecretWallGroup") + DisableElevator() + obj53 = ns.Object("Wiz03b:AmuletofTeleportation") + obj4 = ns.Object("Gilgore") + gvar5 = ns.ObjectGroup("GilgoreGroup") + ns.StoryPic(obj4, "GilgorePic") + ns.SetDialog(obj4, ns.NORMAL, GilgoreTalkStart, GilgoreTalkEnd) + ns.GroupSetOwner(ns.GetHost(), gvar5) + ns.SetOwner(ns.GetHost(), obj44) + wp6 = ns.Waypoint("TauntWP") + gvar7 = ns.ObjectGroup("GilgoreTrigGroup") + obj8 = ns.Object("LeadRogue1") + obj9 = ns.Object("LeadRogue2") + obj10 = ns.Object("LeadRogue3") + obj11 = ns.Object("LeadRogue4") + obj12 = ns.Object("TauntTrig") + gvar15 = ns.ObjectGroup("BackDoorGroup") + gvar14 = ns.ObjectGroup("RogueGroup1") + obj13 = ns.Object("RogueDoor2") + ns.LockDoor(obj13) + wp54 = ns.Waypoint("Wiz03aExitWP") + wp55 = ns.Waypoint("Wiz03cExitWP") + gvar57 = ns.ObjectGroup("ExitTrigGroup") + wp56 = ns.Waypoint("Secret01WP") + gvar16 = ns.WallGroup("InvisibleWallGroup") +} +func MapEntry() { + ns.UnBlind() + ns.ObjectGroupOn(gvar57) +} +func Ambush() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + v10 float32 + v11 float32 + v12 float32 + v13 float32 + v14 float32 + v15 float32 + v16 float32 + v17 float32 + v18 float32 + v19 float32 + v20 float32 + v21 float32 + ) + v0 = ns.GetWaypointX(wp28) + v1 = ns.GetWaypointY(wp28) + v2 = ns.GetWaypointX(wp29) + v3 = ns.GetWaypointY(wp29) + v4 = ns.GetWaypointX(wp30) + v5 = ns.GetWaypointY(wp30) + v6 = ns.GetWaypointX(wp31) + v7 = ns.GetWaypointY(wp31) + v8 = ns.GetWaypointX(wp32) + v9 = ns.GetWaypointY(wp32) + v10 = ns.GetWaypointX(wp33) + v11 = ns.GetWaypointY(wp33) + v12 = ns.GetWaypointX(wp34) + v13 = ns.GetWaypointY(wp34) + v14 = ns.GetWaypointX(wp35) + v15 = ns.GetWaypointY(wp35) + v16 = ns.GetWaypointX(wp36) + v17 = ns.GetWaypointY(wp36) + v18 = ns.GetWaypointX(wp37) + v19 = ns.GetWaypointY(wp37) + v20 = ns.GetWaypointX(wp38) + v21 = ns.GetWaypointY(wp38) + ns.ObjectGroupOn(gvar27) + ns.MoveObject(obj17, v0, v1) + ns.MoveObject(obj18, v2, v3) + ns.MoveObject(obj19, v4, v5) + ns.MoveObject(obj20, v16, v17) + ns.MoveObject(obj21, v18, v19) + ns.MoveObject(obj22, v6, v7) + ns.CreatureGuard(obj22, v6, v7, v20, v21, 500) + ns.MoveObject(obj23, v8, v9) + ns.CreatureGuard(obj23, v8, v9, v20, v21, 500) + ns.MoveObject(obj24, v10, v11) + ns.CreatureGuard(obj24, v10, v11, v20, v21, 500) + ns.MoveObject(obj25, v12, v13) + ns.CreatureGuard(obj25, v12, v13, v20, v21, 500) + ns.MoveObject(obj26, v14, v15) + ns.CreatureGuard(obj26, v14, v15, v20, v21, 500) + ns.ObjectGroupOff(gvar41) + ns.ObjectOn(obj39) + ns.ObjectGroupOn(gvar15) +} +func BanditAmbush() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Chat(obj17, "Wiz03b:BanditAmbush") + PlayActionMusic() +LABEL1: + return +} +func BoulderGo() { + ns.AudioEvent(ns.BoulderRoll, wp51) + ns.WallGroupOpen(gvar48) + ns.Move(obj45, wp49) + ns.ObjectGroupOff(gvar46) + ns.LockDoor(obj47) +} +func IronBlock() { + ns.CreateObject("ExtentBoxLarge", wp50) +} +func BlockFilter() int { + if !ns.IsCaller(obj45) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func OpenRogueSecretWallGroup() { + ns.WallGroupOpen(gvar52) +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MonsterGoHomeShop() { + if !ns.HasClass(ns.GetCaller(), ns.MONSTER) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlayerWiz03aExit() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp54) + v1 = ns.GetWaypointY(wp54) + ns.MoveObject(ns.GetHost(), v0, v1) +} +func FreezePlayer() { + ns.Frozen(ns.GetHost(), true) +} +func GotoWiz03a() { + ns.ObjectGroupOff(gvar57) + ns.Blind() + ns.FrameTimer(30, FreezePlayer) + ns.FrameTimer(60, PlayerWiz03aExit) +} +func PlayerWiz03cExit() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp55) + v1 = ns.GetWaypointY(wp55) + ns.MoveObject(ns.GetHost(), v0, v1) +} +func GotoWiz03c() { + ns.ObjectGroupOff(gvar57) + ns.Blind() + ns.FrameTimer(30, FreezePlayer) + ns.FrameTimer(60, PlayerWiz03cExit) +} +func Secret01XP() { + ns.AudioEvent(ns.SecretFound, wp56) + ns.GiveXp(ns.GetHost(), 50) + ns.PrintToAll("GeneralPrint:SecretFound") +} +func FoundAmulet() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("Con05B.scr:FoundAmulet") +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(22, 100) +LABEL1: + return +} +func PlayDunMirMusic() { + ns.Music(16, 100) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz03c/dummy_test.go b/examples/wiz03c/dummy_test.go new file mode 100644 index 0000000..11c85b6 --- /dev/null +++ b/examples/wiz03c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz03c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz03c/wiz03c.go b/examples/wiz03c/wiz03c.go new file mode 100644 index 0000000..2c3355c --- /dev/null +++ b/examples/wiz03c/wiz03c.go @@ -0,0 +1,117 @@ +package wiz03c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + gvar6 ns.ObjectGroupID + gvar7 ns.ObjectGroupID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + gvar12 ns.ObjectGroupID + obj13 ns.ObjectID + wp14 ns.WaypointID +) + +func PlayerDeath() { + ns.DeathScreen(3) +} +func PlaySubMusic() { + ns.ObjectOff(ns.GetTrigger()) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(19, 100) +LABEL1: + return +} +func MapInitialize() { + obj4 = ns.Object("Wiz03b:AmuletofTeleportation") + obj5 = ns.Object("FloorPit") + gvar6 = ns.ObjectGroup("CreatureGroup1") + ns.ObjectGroupOff(gvar6) + gvar7 = ns.ObjectGroup("CreatureGroup2") + ns.ObjectGroupOff(gvar7) + obj8 = ns.Object("WizardDesk1") + obj9 = ns.Object("WizardDesk2") + obj10 = ns.Object("WizardDesk3") + obj11 = ns.Object("WizardDesk4") + ns.Damage(obj8, 0, 100, 12) + ns.Damage(obj9, 0, 100, 12) + ns.Damage(obj10, 0, 100, 12) + ns.Damage(obj11, 0, 100, 12) + gvar12 = ns.ObjectGroupID(ns.Object("SpiderAmbushGroup")) // FIXME + ns.ObjectGroupOff(gvar12) + wp14 = ns.Waypoint("Wiz03bExitWP") + obj13 = ns.Object("ExitTrig") +} +func MapEntry() { + PlaySubMusic() + ns.UnBlind() + ns.ObjectOn(obj13) +} +func SpiderAmbush() { + ns.ObjectGroupOn(gvar12) +} +func EnableCreatureGroup1() { + ns.ObjectGroupOn(gvar6) +} +func EnableCreatureGroup2() { + ns.ObjectGroupOn(gvar7) +} +func QuestSwitch() { + if !ns.HasItem(ns.GetHost(), ns.Object("Wiz03b:AmuletofTeleportation")) { + goto LABEL1 + } + ns.ObjectOn(obj5) +LABEL1: + return +} +func PlayerWiz03bExit() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp14) + v1 = ns.GetWaypointY(wp14) + ns.MoveObject(ns.GetHost(), v0, v1) +} +func FreezePlayer() { + ns.Frozen(ns.GetHost(), true) +} +func GotoWiz03b() { + ns.ObjectOff(obj13) + ns.Blind() + ns.FrameTimer(30, FreezePlayer) + ns.FrameTimer(60, PlayerWiz03bExit) +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(22, 100) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz04a/dummy_test.go b/examples/wiz04a/dummy_test.go new file mode 100644 index 0000000..b1f2768 --- /dev/null +++ b/examples/wiz04a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz04a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz04a/wiz04a.go b/examples/wiz04a/wiz04a.go new file mode 100644 index 0000000..3406fa1 --- /dev/null +++ b/examples/wiz04a/wiz04a.go @@ -0,0 +1,224 @@ +package wiz04a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + ivar4 int + ivar5 int + gvar6 int + fvar7 float32 + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + wp14 ns.WaypointID + wp15 ns.WaypointID + wp16 ns.WaypointID + wp17 ns.WaypointID + gvar18 int + gvar19 int + gvar20 int + gvar21 ns.ObjectGroupID + gvar22 ns.ObjectGroupID + obj23 ns.ObjectID + wp24 ns.WaypointID +) + +func init() { + ivar4 = 50 + ivar5 = 20 + gvar6 = 1 + fvar7 = 5 + gvar18 = 0 + gvar19 = 1 + gvar20 = gvar18 +} +func CloseBlockTrap01() { + ns.ObjectOff(obj12) + ns.Move(obj8, wp14) + ns.Move(obj9, wp15) + ns.FrameTimerWithArg(ivar5, 1, BlockTrapBoom) + ns.FrameTimerWithArg(ivar4, 1, ResetBlockTrap) +} +func CloseBlockTrap02() { + ns.ObjectOff(obj13) + ns.Move(obj10, wp16) + ns.Move(obj11, wp17) + ns.FrameTimerWithArg(ivar5, 2, BlockTrapBoom) + ns.FrameTimerWithArg(ivar4, 2, ResetBlockTrap) +} +func BlockTrapLoop() { + var v0 int + v0 = gvar6 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + CloseBlockTrap01() + gvar6 = 2 + goto LABEL3 +LABEL2: + CloseBlockTrap02() + gvar6 = 1 + goto LABEL3 +LABEL3: + ns.FrameTimer(30, BlockTrapLoop) +} +func InitializeBlockTrap() { + obj8 = ns.Object("SpikeBlock01") + obj9 = ns.Object("SpikeBlock02") + obj10 = ns.Object("SpikeBlock03") + obj11 = ns.Object("SpikeBlock04") + wp14 = ns.Waypoint("BlockWP01") + wp15 = ns.Waypoint("BlockWP02") + wp16 = ns.Waypoint("BlockWP03") + wp17 = ns.Waypoint("BlockWP04") + obj12 = ns.Object("BlockTrap01Trigger") + obj13 = ns.Object("BlockTrap02Trigger") + BlockTrapLoop() +} +func BlockTrapBoom(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.AudioEvent(ns.HammerMissing, wp14) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp14), ns.GetWaypointY(wp14), fvar7, 0) + goto LABEL3 +LABEL2: + ns.AudioEvent(ns.HammerMissing, wp16) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp16), ns.GetWaypointY(wp16), fvar7, 0) + goto LABEL3 +LABEL3: + return +} +func ResetBlockTrap(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.ObjectOn(obj12) + ns.AudioEvent(ns.TriggerReleased, wp14) + goto LABEL3 +LABEL2: + ns.ObjectOn(obj13) + ns.AudioEvent(ns.TriggerReleased, wp16) + goto LABEL3 +LABEL3: + return +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func CaptainDialogStart() { + var v0 int + v0 = gvar20 + if v0 == gvar18 { + goto LABEL1 + } + if v0 == gvar19 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con04a:CaptainGreet") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con04a:CaptainIdle") + goto LABEL3 +LABEL3: + return +} +func CaptainDialogEnd() { + var v0 int + v0 = gvar20 + if v0 == gvar18 { + goto LABEL1 + } + if v0 == gvar19 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.JournalEntry(ns.GetHost(), "Chapter4SearchCrypts", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.AwardSpell(ns.GetHost(), ns.SPELL_GLYPH) + ns.PrintToAll("GeneralPrint:Trap") + ns.JournalEntry(ns.GetHost(), "TrapHint", 8) + gvar20 = gvar19 + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func StartCaptainConversation() { + ns.SetDialog(obj23, ns.NORMAL, CaptainDialogStart, CaptainDialogEnd) + ns.StartDialog(obj23, ns.GetHost()) +} +func PlayOutdoorMusic() { + ns.Music(22, 100) +} +func MapInitialize() { + gvar21 = ns.ObjectGroup("Secret2Triggers") + gvar22 = ns.ObjectGroup("Fish") + obj23 = ns.Object("Airship_Captain") + wp24 = ns.Waypoint("SecretAudioOrigin") + ns.StoryPic(obj23, "AirshipCaptainPic") + ns.SetOwner(ns.GetHost(), obj23) + ns.GroupWander(gvar22) + PlayOutdoorMusic() + InitializeBlockTrap() + ns.StartupScreen(4) + ns.FrameTimer(5, StartCaptainConversation) +} +func OpenSecretPassageWalls() { + ns.WallOpen(ns.Wall(129, 137)) +} +func ExitMessage() { + ns.PrintToAll("War04a:ExitMessage") +} +func PlayUndergroundMusic() { + ns.Music(20, 100) +} +func SecretSFX() { + ns.MoveWaypoint(wp24, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp24) +} +func FoundSecret1() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 25) + SecretSFX() +} +func FoundSecret2() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + ns.ObjectGroupOff(gvar21) + SecretSFX() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/wiz04b/dummy_test.go b/examples/wiz04b/dummy_test.go new file mode 100644 index 0000000..46115f5 --- /dev/null +++ b/examples/wiz04b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz04b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz04b/wiz04b.go b/examples/wiz04b/wiz04b.go new file mode 100644 index 0000000..f28b292 --- /dev/null +++ b/examples/wiz04b/wiz04b.go @@ -0,0 +1,740 @@ +package wiz04b + +import ( + "strconv" + + "github.com/noxworld-dev/noxscript/ns/v3" +) + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + flag16 bool + flag17 bool + flag18 bool + flag19 bool + flag20 bool + ivar21 int + ivar22 int + gvar23 int + gvar24 int + gvar25 int + obj26 [13]ns.ObjectID + obj27 [13]ns.ObjectID + ivar28 int + obj29 [56]ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + gvar46 ns.ObjectGroupID + gvar47 ns.WallGroupID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 [56]ns.WaypointID + wp53 ns.WaypointID + gvar54 ns.WaypointGroupID + gvar55 ns.WaypointGroupID + gvar56 ns.WaypointGroupID +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 0 + gvar9 = 1 + gvar10 = 2 + gvar11 = 3 + gvar12 = 4 + gvar13 = 5 + gvar14 = 6 + gvar15 = 7 + flag16 = false + flag17 = true + flag18 = false + flag19 = false + flag20 = false + ivar21 = 0 + ivar22 = 0 + gvar23 = gvar9 + gvar24 = 0 + gvar25 = gvar4 + ivar28 = 120 +} +func setUpFlameLever() { + if !flag16 { + goto LABEL1 + } + return +LABEL1: + flag16 = true + gvar23 = gvar9 + ivar22 = 2 + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL2 + } + obj29[ivar21] = 0 + ivar21 += 1 + } +LABEL2: + ns.FrameTimer(3, flameLever) +} +func flameLever() { + var v0 int + if !flag16 { + goto LABEL1 + } + v0 = gvar23 + if v0 == gvar9 { + goto LABEL2 + } + if v0 == gvar10 { + goto LABEL3 + } + if v0 == gvar11 { + goto LABEL4 + } + if v0 == gvar12 { + goto LABEL5 + } + if v0 == gvar13 { + goto LABEL6 + } + if v0 == gvar14 { + goto LABEL7 + } + if v0 == gvar15 { + goto LABEL8 + } + if v0 == gvar8 { + goto LABEL9 + } + goto LABEL10 +LABEL2: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL11 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("SmallFlame", wp52[ivar21]) + ivar21 += 1 + } +LABEL11: + gvar23 = gvar10 + ns.AudioEvent(ns.FireballCast, wp50) + ns.AudioEvent(ns.FireballCast, wp51) + ivar22 = 2 + goto LABEL10 +LABEL3: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL13 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("MediumFlame", wp52[ivar21]) + ivar21 += 1 + } +LABEL13: + gvar23 = gvar11 + ns.AudioEvent(ns.DemonBreath, wp50) + ns.AudioEvent(ns.DemonBreath, wp51) + ivar22 = 2 + goto LABEL10 +LABEL4: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL15 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("Flame", wp52[ivar21]) + ivar21 += 1 + } +LABEL15: + gvar23 = gvar12 + ivar22 = 2 + goto LABEL10 +LABEL5: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL17 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("LargeFlame", wp52[ivar21]) + ivar21 += 1 + } +LABEL17: + gvar23 = gvar13 + ivar22 = 150 + goto LABEL10 +LABEL6: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL19 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("Flame", wp52[ivar21]) + ivar21 += 1 + } +LABEL19: + gvar23 = gvar14 + ivar22 = 2 + goto LABEL10 +LABEL7: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL21 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("MediumFlame", wp52[ivar21]) + ivar21 += 1 + } +LABEL21: + gvar23 = gvar15 + ns.AudioEvent(ns.FireExtinguish, wp50) + ns.AudioEvent(ns.FireExtinguish, wp51) + ivar22 = 2 + goto LABEL10 +LABEL8: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL23 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = ns.CreateObject("SmallFlame", wp52[ivar21]) + ivar21 += 1 + } +LABEL23: + gvar23 = gvar8 + ivar22 = 2 + goto LABEL10 +LABEL9: + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL25 + } + ns.Delete(obj29[ivar21]) + obj29[ivar21] = 0 + ivar21 += 1 + } +LABEL25: + gvar23 = gvar9 + flag16 = false + goto LABEL10 +LABEL10: + ns.FrameTimer(ivar22, flameLever) +LABEL1: + return +} +func skullHallOn() { + if !flag17 { + goto LABEL1 + } + ns.CastSpellLocationLocation(ns.SPELL_FIREBALL, 3012, 2229, 3185, 2403) + ns.CastSpellLocationLocation(ns.SPELL_FIREBALL, 2896, 2346, 3070, 2517) + ns.FrameTimer(60, skullHallOn) +LABEL1: + return +} +func skullHallOff() { + flag17 = false +} +func Zombie1Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj38) + v1 = ns.GetObjectY(obj38) + ns.RaiseZombie(obj38) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj30, obj38) +} +func Zombie2Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj39) + v1 = ns.GetObjectY(obj39) + ns.RaiseZombie(obj39) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj30, obj39) +} +func Zombie3Rise() { + var ( + v0 float32 + v1 float32 + ) + _ = v1 + _ = v0 + v0 = ns.GetObjectX(obj40) + v1 = ns.GetObjectY(obj40) + ns.RaiseZombie(obj40) + ns.AudioEvent(ns.ZombieRecognize, ns.Waypoint("ZombieAttackWP")) + ns.LookAtObject(obj30, obj40) +} +func ZombieAttackHecubah() { + ns.WayPointGroupOn(gvar55) + ns.WayPointGroupOff(gvar54) + ns.HitLocation(obj38, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) + ns.HitLocation(obj39, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) + ns.HitLocation(obj40, ns.GetWaypointX(ns.Waypoint("ZombieAttackWP")), ns.GetWaypointY(ns.Waypoint("ZombieAttackWP"))) +} +func HecubahShootZombie1() { + ns.LookAtObject(obj30, obj38) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj30, obj38) + ns.FrameTimer(30, HecubahShootZombie2) +} +func HecubahShootZombie2() { + ns.LookAtObject(obj30, obj39) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj30, obj39) + ns.FrameTimer(30, HecubahShootZombie3) +} +func HecubahShootZombie3() { + ns.LookAtObject(obj30, obj40) + ns.CastSpellObjectObject(ns.SPELL_FIREBALL, obj30, obj40) + ns.FrameTimer(30, HecubahEncounterSEG3) +} +func HecubahEncounterSEG4() { + ns.SetDialog(obj30, ns.NORMAL, HecubahDialogStart, HecubahDialogEnd) + gvar25 = gvar7 + ns.StartDialog(obj30, ns.GetHost()) +} +func HecubahEncounterSEG3() { + ns.SetDialog(obj31, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + gvar25 = gvar6 + ns.StartDialog(obj31, ns.GetHost()) +} +func hecGone() { + if !ns.IsCaller(obj30) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj30, ns.GetWaypointX(wp49), ns.GetWaypointY(wp49)) + ns.ObjectOff(obj30) +LABEL1: + return +} +func ReleasePlayer() { + if !ns.IsCaller(obj30) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar47) + ns.NoWallSound(false) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj31, ns.NORMAL, necroTalkStart, necroTalkEnd) + gvar24 = 5 + ns.StartDialog(obj31, ns.GetHost()) +LABEL1: + return +} +func necroDies() { + ns.UnlockDoor(obj36) + ns.UnlockDoor(obj37) + ns.CancelDialog(obj31) + ns.SetDialog(obj31, ns.NORMAL, necroTalkStart, necroTalkEnd) + gvar24 = 4 + ns.StartDialog(obj31, ns.GetHost()) +} +func necroTalkStart() { + var v0 int + v0 = gvar24 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroTaunts") + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL2: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroGloats") + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL3: + ns.TellStory(ns.DemonRecognize, "Con04a:NecroThreatens2") + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL4: + ns.WayPointGroupOff(gvar55) + ns.WayPointGroupOn(gvar56) + ns.LookAtObject(obj31, ns.GetHost()) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroDies") + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL5: + ns.AggressionLevel(obj31, 0.83) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroThreatens") + ns.LookAtObject(obj31, ns.GetHost()) + ns.Frozen(obj31, true) + ns.Frozen(obj38, true) + ns.Frozen(obj40, true) + goto LABEL6 +LABEL6: + return +} +func necroTalkEnd() { + ns.CancelDialog(obj31) + ns.Frozen(obj31, false) + ns.Frozen(obj38, false) + ns.Frozen(obj40, false) + if gvar24 != 4 { + goto LABEL1 + } + ns.JournalEdit(ns.GetHost(), "Chapter4SearchCrypts", 4) + ns.JournalEntry(ns.GetHost(), "Chapter4Escape", 2) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL1: + return +} +func ZombieInjured() { + ns.Damage(ns.GetTrigger(), 0, 100, 1) +} +func InitializeFistTraps() { + obj27[0] = ns.Object("FistTrap01") + obj27[1] = ns.Object("FistTrap02") + obj27[2] = ns.Object("FistTrap03") + obj27[3] = ns.Object("FistTrap04") + obj27[4] = ns.Object("FistTrap05") + obj27[5] = ns.Object("FistTrap06") + obj27[6] = ns.Object("FistTrap07") + obj27[7] = ns.Object("FistTrap08") + obj27[8] = ns.Object("FistTrap09") + obj27[9] = ns.Object("FistTrap10") + obj27[10] = ns.Object("FistTrap11") + obj27[11] = ns.Object("FistTrap12") + obj27[12] = ns.Object("FistTrap13") + obj26[0] = ns.Object("FistTrapLight01") + obj26[1] = ns.Object("FistTrapLight02") + obj26[2] = ns.Object("FistTrapLight03") + obj26[3] = ns.Object("FistTrapLight04") + obj26[4] = ns.Object("FistTrapLight05") + obj26[5] = ns.Object("FistTrapLight06") + obj26[6] = ns.Object("FistTrapLight07") + obj26[7] = ns.Object("FistTrapLight08") + obj26[8] = ns.Object("FistTrapLight09") + obj26[9] = ns.Object("FistTrapLight10") + obj26[10] = ns.Object("FistTrapLight11") + obj26[11] = ns.Object("FistTrapLight12") + obj26[12] = ns.Object("FistTrapLight13") +} +func MapInitialize() { + ivar21 = 0 + for { + if !(ivar21 < 56) { + goto LABEL1 + } + wp52[ivar21] = ns.Waypoint("FlameWay" + strconv.Itoa(ivar21+1)) + ivar21 += 1 + } +LABEL1: + obj30 = ns.Object("Hecubah") + obj31 = ns.Object("Necromancer") + obj32 = ns.Object("EntranceGate1") + obj33 = ns.Object("EntranceGate2") + obj34 = ns.Object("EntranceGate3") + obj35 = ns.Object("EntranceGate4") + obj36 = ns.Object("PitGate1") + obj37 = ns.Object("PitGate2") + obj38 = ns.Object("DeadZombie1") + obj39 = ns.Object("DeadZombie2") + obj40 = ns.Object("DeadZombie3") + obj41 = ns.Object("Zombie01") + obj42 = ns.Object("Zombie02") + obj43 = ns.Object("Zombie03") + obj44 = ns.Object("FlameLever1") + obj45 = ns.Object("FlameLever2") + gvar46 = ns.ObjectGroup("Zombies") + gvar47 = ns.WallGroup("InvisibleBlockWall") + wp50 = ns.Waypoint("FlameSound1") + wp51 = ns.Waypoint("FlameSound2") + wp48 = ns.Waypoint("AudioOrigin") + wp53 = ns.Waypoint("WP") + wp49 = ns.Waypoint("HecubahStorage") + gvar54 = ns.WaypointGroup("BeforeSetpieceWay") + gvar55 = ns.WaypointGroup("SetpieceWay") + gvar56 = ns.WaypointGroup("AfterSetpieceWay") + ns.WayPointGroupOff(gvar55) + ns.WayPointGroupOff(gvar56) + ns.Damage(obj38, 0, 100, 0) + ns.Damage(obj39, 0, 100, 0) + ns.Damage(obj40, 0, 100, 0) + ns.ZombieStayDown(obj38) + ns.ZombieStayDown(obj39) + ns.ZombieStayDown(obj40) + ns.StoryPic(obj31, "NecromancerPic") + InitializeFistTraps() +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func ToggleSkullHall() { + if !flag17 { + goto LABEL1 + } + flag17 = false + goto LABEL2 +LABEL1: + flag17 = true + skullHallOn() +LABEL2: + return +} +func HecubahDialogStart() { + var v0 int + v0 = gvar25 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + if v0 == gvar7 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.GhostRecognize, "War04a:Hecubah") + goto LABEL5 +LABEL2: + ns.TellStory(ns.GhostRecognize, "War04a:HecubahSEG2") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj31, ns.GetHost()) + ns.TellStory(ns.DemonRecognize, "Con04a:NecroWarnsHec") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj30, ns.GetHost()) + ns.TellStory(ns.GhostRecognize, "War04a:HecubahSEG3") + goto LABEL5 +LABEL5: + return +} +func HecubahDialogEnd() { + var ( + v0 float32 + v1 float32 + v4 ns.WaypointID + v5 int + ) + _ = v1 + _ = v0 + v5 = gvar25 + if v5 == gvar4 { + goto LABEL1 + } + if v5 == gvar5 { + goto LABEL2 + } + if v5 == gvar6 { + goto LABEL3 + } + if v5 == gvar7 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.FrameTimer(20, Zombie2Rise) + ns.FrameTimer(45, Zombie1Rise) + ns.FrameTimer(60, Zombie3Rise) + ns.FrameTimer(60, ZombieAttackHecubah) + gvar25 = gvar5 + ns.CancelDialog(obj30) + goto LABEL5 +LABEL2: + ns.LookAtObject(obj30, obj39) + gvar25 = gvar6 + ns.CancelDialog(obj30) + ns.AggressionLevel(obj38, 0) + ns.AggressionLevel(obj39, 0) + ns.AggressionLevel(obj40, 0) + ns.PushObject(obj38, 40, ns.GetObjectX(obj30), ns.GetObjectY(obj30)) + ns.PushObject(obj39, 40, ns.GetObjectX(obj30), ns.GetObjectY(obj30)) + ns.PushObject(obj40, 40, ns.GetObjectX(obj30), ns.GetObjectY(obj30)) + ns.SetOwner(obj36, obj38) + ns.SetOwner(obj36, obj39) + ns.SetOwner(obj36, obj40) + ns.SetCallback(obj38, 7, ZombieInjured) + ns.SetCallback(obj39, 7, ZombieInjured) + ns.SetCallback(obj40, 7, ZombieInjured) + ns.FrameTimer(20, HecubahShootZombie1) + goto LABEL5 +LABEL3: + gvar25 = gvar7 + ns.CancelDialog(obj31) + ns.FrameTimer(5, HecubahEncounterSEG4) + goto LABEL5 +LABEL4: + v4 = ns.Waypoint("WP") + v0 = ns.GetObjectX(obj30) + v1 = ns.GetObjectY(obj30) + ns.CreatureIdle(obj31) + ns.UnlockDoor(obj32) + ns.UnlockDoor(obj33) + ns.LockDoor(obj34) + ns.LockDoor(obj35) + ns.ObjectOn(obj30) + ns.Move(obj30, v4) + flag19 = true + ns.CancelDialog(obj30) + goto LABEL5 +LABEL5: + return +} +func AttackSuccessful() { + ns.SetDialog(obj30, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj30, ns.GetHost()) +} +func HecubahEncounterSEG2() { + ns.StoryPic(obj30, "HecubahPic") + ns.SetDialog(obj30, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj30, ns.GetHost()) +} +func HecubahEncounterSEG1() { + if !(!flag18 && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + flag18 = true + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahEncounterSEG2) +LABEL1: + return +} +func ResetFistTrap(a1 int) { + ns.ObjectOn(obj26[a1]) + ns.ObjectOn(obj27[a1]) + ns.MoveWaypoint(wp48, ns.GetObjectX(obj27[a1]), ns.GetObjectY(obj27[a1])) + ns.AudioEvent(ns.TriggerReleased, wp48) +} +func DropFist(a1 int) { + ns.CastSpellObjectLocation(ns.SPELL_FIST, obj27[a1], ns.GetObjectX(obj27[a1]), ns.GetObjectY(obj27[a1])) + ns.ObjectOff(obj27[a1]) + ns.ObjectOff(obj26[a1]) + ns.FrameTimerWithArg(ivar28, a1, ResetFistTrap) +} +func ActivateFistTrap01() { + DropFist(0) +} +func ActivateFistTrap02() { + DropFist(1) +} +func ActivateFistTrap03() { + DropFist(2) +} +func ActivateFistTrap04() { + DropFist(3) +} +func ActivateFistTrap05() { + DropFist(4) +} +func ActivateFistTrap06() { + DropFist(5) +} +func ActivateFistTrap07() { + DropFist(6) +} +func ActivateFistTrap08() { + DropFist(7) +} +func ActivateFistTrap09() { + DropFist(8) +} +func ActivateFistTrap10() { + DropFist(9) +} +func ActivateFistTrap11() { + DropFist(10) +} +func ActivateFistTrap12() { + DropFist(11) +} +func ActivateFistTrap13() { + DropFist(12) +} +func NoEnemys() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz04c/dummy_test.go b/examples/wiz04c/dummy_test.go new file mode 100644 index 0000000..0172bbb --- /dev/null +++ b/examples/wiz04c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz04c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz04c/wiz04c.go b/examples/wiz04c/wiz04c.go new file mode 100644 index 0000000..7336d06 --- /dev/null +++ b/examples/wiz04c/wiz04c.go @@ -0,0 +1,923 @@ +package wiz04c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.WallGroupID + obj5 ns.ObjectID + obj6 ns.ObjectID + ivar7 int + ivar8 int + fvar9 float32 + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + gvar42 ns.ObjectGroupID + gvar43 ns.ObjectGroupID + gvar44 ns.ObjectGroupID + obj45 [13]ns.ObjectID + obj46 [13]ns.ObjectID + ivar47 int + wp48 ns.WaypointID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + wp55 ns.WaypointID + wp56 ns.WaypointID + gvar57 ns.WallGroupID + gvar58 ns.WallGroupID + flag59 bool + flag60 bool + gvar61 int + gvar62 int + gvar63 int + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + wp70 [4]ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + flag73 bool + flag74 bool + ivar75 int + wp76 ns.WaypointID + gvar77 ns.ObjectGroupID + ivar78 int + ivar79 int + ivar80 int + ivar81 int + ivar82 int + ivar83 int + ivar84 int + ivar85 int + ivar86 int + ivar87 int + ivar88 int + gvar89 int + gvar90 int + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID +) + +func init() { + ivar7 = 50 + ivar8 = 20 + fvar9 = 5 + ivar47 = 120 + flag59 = false + flag60 = false + gvar61 = 0 + gvar62 = 1 + gvar63 = gvar62 + flag73 = false + flag74 = false + ivar75 = 0 + ivar78 = 0 + ivar79 = 0 + ivar80 = 0 + ivar81 = 0 + ivar82 = 0 + ivar83 = 0 + ivar84 = 0 + ivar85 = 0 + ivar86 = 0 + ivar87 = 0 + ivar88 = 0 + gvar89 = 0 + gvar90 = 0 +} +func InitializeSkeletonAmbush() { + gvar4 = ns.WallGroup("SkeletonAmbushWalls") +} +func SkeletonAmbush() { + ns.WallGroupBreak(gvar4) +} +func SkeletonAmbushTimer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.FrameTimer(45, SkeletonAmbush) +LABEL1: + return +} +func EnablePitTrapElevator01() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(ns.Object("PitTrapElevator01")) +} +func EnablePitTrapElevator02() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(ns.Object("PitTrapElevator02")) +} +func OpenPitElevatorWalls01() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(ns.WallGroup("PitTrapElevatorWalls01")) +} +func OpenPitElevatorWalls02() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(ns.WallGroup("PitTrapElevatorWalls02")) +} +func ZombieAmbush() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupBreak(ns.WallGroup("ZombieAmbushWalls")) +} +func InitializeHallwayArrowTraps() { + obj5 = ns.Object("HallwayArrowTrap01") + obj6 = ns.Object("HallwayArrowTrap02") +} +func ResetHallwayArrowTrap01() { + ns.ObjectOff(obj5) +} +func ResetHallwayArrowTrap02() { + ns.ObjectOff(obj6) +} +func ActivateHallwayArrowTrap01() { + ns.ObjectOn(obj5) + ns.FrameTimer(1, ResetHallwayArrowTrap01) +} +func ActivateHallwayArrowTrap02() { + ns.ObjectOn(obj6) + ns.FrameTimer(1, ResetHallwayArrowTrap02) +} +func InitializeBlockTrap() { + obj10 = ns.Object("SpikeBlock01") + obj11 = ns.Object("SpikeBlock02") + obj12 = ns.Object("SpikeBlock03") + obj13 = ns.Object("SpikeBlock04") + obj14 = ns.Object("SpikeBlock05") + obj15 = ns.Object("SpikeBlock06") + obj16 = ns.Object("SpikeBlock07") + obj17 = ns.Object("SpikeBlock08") + obj18 = ns.Object("SpikeBlock09") + obj19 = ns.Object("SpikeBlock10") + obj20 = ns.Object("SpikeBlock11") + obj21 = ns.Object("SpikeBlock12") + obj22 = ns.Object("SpikeBlock13") + obj23 = ns.Object("SpikeBlock14") + obj24 = ns.Object("SpikeBlock15") + obj25 = ns.Object("SpikeBlock16") + wp26 = ns.Waypoint("BlockWP01") + wp27 = ns.Waypoint("BlockWP02") + wp28 = ns.Waypoint("BlockWP03") + wp29 = ns.Waypoint("BlockWP04") + wp30 = ns.Waypoint("BlockWP05") + wp31 = ns.Waypoint("BlockWP06") + wp32 = ns.Waypoint("BlockWP07") + wp33 = ns.Waypoint("BlockWP08") + wp34 = ns.Waypoint("BlockWP09") + wp35 = ns.Waypoint("BlockWP10") + wp36 = ns.Waypoint("BlockWP11") + wp37 = ns.Waypoint("BlockWP12") + wp38 = ns.Waypoint("BlockWP13") + wp39 = ns.Waypoint("BlockWP14") + wp40 = ns.Waypoint("BlockWP15") + wp41 = ns.Waypoint("BlockWP16") + gvar42 = ns.ObjectGroup("BlockTrap01Triggers") + gvar43 = ns.ObjectGroup("BlockTrap02Triggers") + gvar44 = ns.ObjectGroup("BlockTrap03Triggers") +} +func BlockTrapBoom(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.AudioEvent(ns.HammerMissing, wp28) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp28), ns.GetWaypointY(wp28), fvar9, 0) + goto LABEL4 +LABEL2: + ns.AudioEvent(ns.HammerMissing, wp34) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp34), ns.GetWaypointY(wp34), fvar9, 0) + goto LABEL4 +LABEL3: + ns.AudioEvent(ns.HammerMissing, wp38) + ns.Effect(ns.JIGGLE, ns.GetWaypointX(wp38), ns.GetWaypointY(wp38), fvar9, 0) + goto LABEL4 +LABEL4: + return +} +func ResetBlockTrap(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.ObjectGroupOn(gvar42) + ns.AudioEvent(ns.TriggerReleased, wp28) + goto LABEL4 +LABEL2: + ns.ObjectGroupOn(gvar43) + ns.AudioEvent(ns.TriggerReleased, wp34) + goto LABEL4 +LABEL3: + ns.ObjectGroupOn(gvar44) + ns.AudioEvent(ns.TriggerReleased, wp38) + goto LABEL4 +LABEL4: + return +} +func CloseBlockTrap01() { + ns.ObjectGroupOff(gvar42) + ns.Move(obj10, wp26) + ns.Move(obj11, wp27) + ns.Move(obj12, wp28) + ns.Move(obj13, wp29) + ns.Move(obj14, wp30) + ns.Move(obj15, wp31) + ns.FrameTimerWithArg(ivar8, 1, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 1, ResetBlockTrap) +} +func CloseBlockTrap02() { + ns.ObjectGroupOff(gvar43) + ns.Move(obj16, wp32) + ns.Move(obj17, wp33) + ns.Move(obj18, wp34) + ns.Move(obj19, wp35) + ns.Move(obj20, wp36) + ns.Move(obj21, wp37) + ns.FrameTimerWithArg(ivar8, 2, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 2, ResetBlockTrap) +} +func CloseBlockTrap03() { + ns.ObjectGroupOff(gvar44) + ns.Move(obj22, wp38) + ns.Move(obj23, wp39) + ns.Move(obj24, wp40) + ns.Move(obj25, wp41) + ns.FrameTimerWithArg(ivar8, 3, BlockTrapBoom) + ns.FrameTimerWithArg(ivar7, 3, ResetBlockTrap) +} +func InitializeFistTraps() { + obj46[0] = ns.Object("FistTrap01") + obj46[1] = ns.Object("FistTrap02") + obj46[2] = ns.Object("FistTrap03") + obj46[3] = ns.Object("FistTrap04") + obj46[4] = ns.Object("FistTrap05") + obj46[5] = ns.Object("FistTrap06") + obj46[6] = ns.Object("FistTrap07") + obj46[7] = ns.Object("FistTrap08") + obj46[8] = ns.Object("FistTrap09") + obj46[9] = ns.Object("FistTrap10") + obj46[10] = ns.Object("FistTrap11") + obj46[11] = ns.Object("FistTrap12") + obj46[12] = ns.Object("FistTrap13") + obj45[0] = ns.Object("FistTrapLight01") + obj45[1] = ns.Object("FistTrapLight02") + obj45[2] = ns.Object("FistTrapLight03") + obj45[3] = ns.Object("FistTrapLight04") + obj45[4] = ns.Object("FistTrapLight05") + obj45[5] = ns.Object("FistTrapLight06") + obj45[6] = ns.Object("FistTrapLight07") + obj45[7] = ns.Object("FistTrapLight08") + obj45[8] = ns.Object("FistTrapLight09") + obj45[9] = ns.Object("FistTrapLight10") + obj45[10] = ns.Object("FistTrapLight11") + obj45[11] = ns.Object("FistTrapLight12") + obj45[12] = ns.Object("FistTrapLight13") +} +func ResetFistTrap(a1 int) { + ns.ObjectOn(obj45[a1]) + ns.ObjectOn(obj46[a1]) + ns.MoveWaypoint(wp48, ns.GetObjectX(obj46[a1]), ns.GetObjectY(obj46[a1])) + ns.AudioEvent(ns.TriggerReleased, wp48) +} +func DropFist(a1 int) { + ns.CastSpellObjectLocation(ns.SPELL_FIST, obj46[a1], ns.GetObjectX(obj46[a1]), ns.GetObjectY(obj46[a1])) + ns.ObjectOff(obj46[a1]) + ns.ObjectOff(obj45[a1]) + ns.FrameTimerWithArg(ivar47, a1, ResetFistTrap) +} +func ActivateFistTrap01() { + DropFist(0) +} +func ActivateFistTrap02() { + DropFist(1) +} +func ActivateFistTrap03() { + DropFist(2) +} +func ActivateFistTrap04() { + DropFist(3) +} +func ActivateFistTrap05() { + DropFist(4) +} +func ActivateFistTrap06() { + DropFist(5) +} +func ActivateFistTrap07() { + DropFist(6) +} +func ActivateFistTrap08() { + DropFist(7) +} +func ActivateFistTrap09() { + DropFist(8) +} +func ActivateFistTrap10() { + DropFist(9) +} +func ActivateFistTrap11() { + DropFist(10) +} +func ActivateFistTrap12() { + DropFist(11) +} +func ActivateFistTrap13() { + DropFist(12) +} +func EnableGuardian() { + ns.WideScreen(false) + ns.AudioEvent(ns.SwordsmanRecognize, wp48) + ns.Frozen(ns.GetHost(), false) + ns.AggressionLevel(obj53, 0.83) + ns.NoWallSound(false) +} +func GuardianEnterFX() { + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.WallDestroyedStone, wp48) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) +} +func GuardianMoveToArena() { + ns.Move(obj53, wp55) +} +func InitializeGuardian() { + obj53 = ns.Object("Guardian") + obj49 = ns.Object("RightGuardianGate") + obj50 = ns.Object("LeftGuardianGate") + obj51 = ns.Object("RightGuardianDoor") + obj52 = ns.Object("LeftGuardianDoor") + obj54 = ns.Object("GuardianDoorTrigger") + wp55 = ns.Waypoint("GuardianArena") + wp56 = ns.Waypoint("GuardianDoorWP") + gvar57 = ns.WallGroup("GuardianWalls") + gvar58 = ns.WallGroup("GuardianDestructableWalls") + ns.LockDoor(obj49) + ns.LockDoor(obj50) +} +func GuardianEnter() { + if !(!flag59 && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + ns.ObjectOn(obj54) + ns.MusicPushEvent() + ns.Music(26, 100) + ns.LockDoor(obj51) + ns.LockDoor(obj52) + flag59 = true + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(60, GuardianMoveToArena) + ns.FrameTimer(30, GuardianEnterFX) +LABEL1: + return +} +func BreakGuardianWalls() { + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.AudioEvent(ns.WallDestroyedStone, wp48) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) + ns.WallGroupOpen(gvar57) + ns.WallGroupBreak(gvar58) +} +func GuardianArrivesInArena() { + if !ns.IsCaller(obj53) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOff(obj54) + ns.LookAtObject(obj53, ns.GetHost()) + ns.FrameTimer(30, EnableGuardian) +LABEL1: + return +} +func GuardianDie() { + if flag60 { + goto LABEL1 + } + flag60 = true + ns.UnlockDoor(obj50) + ns.UnlockDoor(obj49) + ns.UnlockDoor(obj52) + ns.UnlockDoor(obj51) + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagDrop, wp48) + ns.PrintToAll("War04d:WarriorDie") + ns.GiveXp(ns.GetHost(), 700) + ns.MusicPopEvent() +LABEL1: + return +} +func ClearGuardianDoor() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MoveObject(ns.GetCaller(), ns.GetWaypointX(wp56), ns.GetWaypointY(wp56)) +LABEL1: + return +} +func EnableKeeper() { + ns.LookAtObject(obj64, ns.GetHost()) + ns.AggressionLevel(obj64, 0.83) +} +func InitializeKeeper() { + obj64 = ns.Object("Keeper") + obj65 = ns.Object("LeftKeeperEntranceDoor") + obj66 = ns.Object("RightKeeperEntranceDoor") + obj67 = ns.Object("LeftKeeperExitDoor") + obj68 = ns.Object("RightKeeperExitDoor") + obj69 = ns.Object("KeeperDoorTrigger") + wp70[0] = ns.Waypoint("BlinkWP1") + wp70[1] = ns.Waypoint("BlinkWP2") + wp70[2] = ns.Waypoint("BlinkWP3") + wp70[3] = ns.Waypoint("BlinkWP4") + wp71 = ns.Waypoint("KeeperEnterWP") + wp72 = ns.Waypoint("KeeperDoorWP") + ns.LockDoor(obj67) + ns.LockDoor(obj68) +} +func EnemyGoHome() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !(r1 && ns.GetCaller() != obj64) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func GoInvisible() { + var ( + v0 int + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 [4]float32 + v6 float32 + v7 int + ) + v6 = 0 + v7 = 0 + ivar75 += 1 + if gvar63 != gvar62 { + goto LABEL1 + } + gvar63 = gvar61 + return + goto LABEL2 +LABEL1: + gvar63 = gvar62 +LABEL2: + v3 = ns.GetObjectX(obj64) + v4 = ns.GetObjectY(obj64) + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL3 + } + v5[v0] = ns.Distance(v3, v4, ns.GetWaypointX(wp70[v0]), ns.GetWaypointY(wp70[v0])) + v0 += 1 + } +LABEL3: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL5 + } + if !(v5[v0] > v6) { + goto LABEL6 + } + v6 = v5[v0] + v7 = v0 + LABEL6: + v0 += 1 + } +LABEL5: + if !(ns.CurrentHealth(obj64) > 0) { + goto LABEL8 + } + v1 = ns.GetWaypointX(wp70[v7]) + v2 = ns.GetWaypointY(wp70[v7]) + if !(ivar75 >= 4) { + goto LABEL9 + } + ivar75 = 0 + ns.Enchant(obj64, ns.ENCHANT_INVISIBLE, 3) +LABEL9: + ns.Effect(ns.TELEPORT, v3, v4, 0, 0) + ns.MoveWaypoint(wp48, v3, v4) + ns.AudioEvent(ns.BlinkCast, wp48) + ns.Effect(ns.SMOKE_BLAST, v1, v2, 0, 0) + ns.MoveObject(obj64, v1, v2) +LABEL8: + return +} +func DisableKeeperDoorTrigger() { + ns.ObjectOff(obj69) +} +func KeeperEnter() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp71) + v1 = ns.GetWaypointY(wp71) + if !(ns.IsCaller(ns.GetHost()) && flag74 == false) { + goto LABEL1 + } + ns.ObjectOn(obj69) + ns.MusicPushEvent() + ns.Music(4, 100) + flag74 = true + ns.Effect(ns.TELEPORT, v0, v1, 0, 0) + ns.AudioEvent(ns.TeleportIn, wp71) + ns.MoveObject(obj64, v0, v1) + ns.LockDoor(obj65) + ns.LockDoor(obj66) + ns.FrameTimer(1, EnableKeeper) + ns.FrameTimer(30, DisableKeeperDoorTrigger) +LABEL1: + return +} +func KeeperDie() { + if flag73 { + goto LABEL1 + } + ns.MusicPopEvent() + flag73 = true + ns.MoveWaypoint(wp48, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.FlagCapture, wp48) + ns.PrintToAll("War04f:WizardDie") + ns.GiveXp(ns.GetHost(), 1000) + ns.UnlockDoor(obj68) + ns.UnlockDoor(obj67) + ns.UnlockDoor(obj66) + ns.UnlockDoor(obj65) +LABEL1: + return +} +func ClearKeeperDoor() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MoveObject(ns.GetCaller(), ns.GetWaypointX(wp72), ns.GetWaypointY(wp72)) +LABEL1: + return +} +func InitializeSkullGuns() { + obj91 = ns.Object("ArrowTrap01") + obj92 = ns.Object("ArrowTrap02") + obj93 = ns.Object("ArrowTrap03") + obj94 = ns.Object("ArrowTrap04") + obj95 = ns.Object("ArrowTrap05") + obj96 = ns.Object("ArrowTrap06") + obj97 = ns.Object("ArrowTrap07") + obj98 = ns.Object("ArrowTrap08") + obj99 = ns.Object("ArrowTrap09") + obj100 = ns.Object("ArrowTrap10") + obj101 = ns.Object("ArrowTrap11") +} +func InitializeMonsterGroups() { + gvar77 = ns.ObjectGroup("MonsterGroup01") +} +func MapInitialize() { + wp48 = ns.Waypoint("AudioOrigin") + wp76 = ns.Waypoint("SecretAudioOrigin") + InitializeSkullGuns() + InitializeSkeletonAmbush() + InitializeGuardian() + InitializeKeeper() + InitializeFistTraps() + InitializeHallwayArrowTraps() + InitializeMonsterGroups() + InitializeBlockTrap() +} +func PlayerDeath() { + ns.DeathScreen(4) +} +func EnableMonsterGroup01() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar77) +} +func SecretSFX() { + ns.MoveWaypoint(wp76, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp76) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + ns.AggressionLevel(ns.Object("Secret01Spider"), 0.83) + SecretSFX() +} +func Secret02Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) + SecretSFX() +} +func CheckRows(a1 int) { + var v0 int + v0 = a1 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + if v0 == 4 { + goto LABEL4 + } + if v0 == 5 { + goto LABEL5 + } + if v0 == 6 { + goto LABEL6 + } + if v0 == 7 { + goto LABEL7 + } + if v0 == 8 { + goto LABEL8 + } + if v0 == 9 { + goto LABEL9 + } + if v0 == 10 { + goto LABEL10 + } + if v0 == 11 { + goto LABEL11 + } + goto LABEL12 +LABEL1: + if !(ivar78 > 0) { + goto LABEL13 + } + ns.ObjectOn(obj91) + goto LABEL14 +LABEL13: + ns.ObjectOff(obj91) +LABEL14: + goto LABEL12 +LABEL2: + if !(ivar79 > 0) { + goto LABEL15 + } + ns.ObjectOn(obj92) + goto LABEL16 +LABEL15: + ns.ObjectOff(obj92) +LABEL16: + goto LABEL12 +LABEL3: + if !(ivar80 > 0) { + goto LABEL17 + } + ns.ObjectOn(obj93) + goto LABEL18 +LABEL17: + ns.ObjectOff(obj93) +LABEL18: + goto LABEL12 +LABEL4: + if !(ivar81 > 0) { + goto LABEL19 + } + ns.ObjectOn(obj94) + goto LABEL20 +LABEL19: + ns.ObjectOff(obj94) +LABEL20: + goto LABEL12 +LABEL5: + if !(ivar82 > 0) { + goto LABEL21 + } + ns.ObjectOn(obj95) + goto LABEL22 +LABEL21: + ns.ObjectOff(obj95) +LABEL22: + goto LABEL12 +LABEL6: + if !(ivar83 > 0) { + goto LABEL23 + } + ns.ObjectOn(obj96) + goto LABEL24 +LABEL23: + ns.ObjectOff(obj96) +LABEL24: + goto LABEL12 +LABEL7: + if !(ivar84 > 0) { + goto LABEL25 + } + ns.ObjectOn(obj97) + goto LABEL26 +LABEL25: + ns.ObjectOff(obj97) +LABEL26: + goto LABEL12 +LABEL8: + if !(ivar85 > 0) { + goto LABEL27 + } + ns.ObjectOn(obj98) + goto LABEL28 +LABEL27: + ns.ObjectOff(obj98) +LABEL28: + goto LABEL12 +LABEL9: + if !(ivar86 > 0) { + goto LABEL29 + } + ns.ObjectOn(obj99) + goto LABEL30 +LABEL29: + ns.ObjectOff(obj99) +LABEL30: + goto LABEL12 +LABEL10: + if !(ivar87 > 0) { + goto LABEL31 + } + ns.ObjectOn(obj100) + goto LABEL32 +LABEL31: + ns.ObjectOff(obj100) +LABEL32: + goto LABEL12 +LABEL11: + if !(ivar88 > 0) { + goto LABEL33 + } + ns.ObjectOn(obj101) + goto LABEL34 +LABEL33: + ns.ObjectOff(obj101) +LABEL34: + goto LABEL12 +LABEL12: + return +} +func ActivateRow01() { + ivar78 += 1 + CheckRows(1) +} +func DisableRow01() { + ivar78 -= 1 + CheckRows(1) +} +func ActivateRow02() { + ivar79 += 1 + CheckRows(2) +} +func DisableRow02() { + ivar79 -= 1 + CheckRows(2) +} +func ActivateRow03() { + ivar80 += 1 + CheckRows(3) +} +func DisableRow03() { + ivar80 -= 1 + CheckRows(3) +} +func ActivateRow04() { + ivar81 += 1 + CheckRows(4) +} +func DisableRow04() { + ivar81 -= 1 + CheckRows(4) +} +func ActivateRow05() { + ivar82 += 1 + CheckRows(5) +} +func DisableRow05() { + ivar82 -= 1 + CheckRows(5) +} +func ActivateRow06() { + ivar83 += 1 + CheckRows(6) +} +func DisableRow06() { + ivar83 -= 1 + CheckRows(6) +} +func ActivateRow07() { + ivar84 += 1 + CheckRows(7) +} +func DisableRow07() { + ivar84 -= 1 + CheckRows(7) +} +func ActivateRow08() { + ivar85 += 1 + CheckRows(8) +} +func DisableRow08() { + ivar85 -= 1 + CheckRows(8) +} +func ActivateRow09() { + ivar86 += 1 + CheckRows(9) +} +func DisableRow09() { + ivar86 -= 1 + CheckRows(9) +} +func ActivateRow10() { + ivar87 += 1 + CheckRows(10) +} +func DisableRow10() { + ivar87 -= 1 + CheckRows(10) +} +func ActivateRow11() { + ivar88 += 1 + CheckRows(11) +} +func DisableRow11() { + ivar88 -= 1 + CheckRows(11) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz05a/dummy_test.go b/examples/wiz05a/dummy_test.go new file mode 100644 index 0000000..6c8ec32 --- /dev/null +++ b/examples/wiz05a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz05a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz05a/wiz05a.go b/examples/wiz05a/wiz05a.go new file mode 100644 index 0000000..fce8c63 --- /dev/null +++ b/examples/wiz05a/wiz05a.go @@ -0,0 +1,1712 @@ +package wiz05a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + obj40 ns.ObjectID + wp41 ns.WaypointID + wp42 ns.WaypointID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + gvar65 ns.ObjectGroupID + gvar66 ns.ObjectGroupID + gvar67 ns.ObjectGroupID + ivar68 int + gvar69 int + gvar70 int + flag71 bool + gvar72 int + gvar73 int + gvar74 int + gvar75 int + gvar76 int + gvar77 int + gvar78 int + gvar79 int + gvar80 int + gvar81 int + gvar82 int + gvar83 int + gvar84 int + gvar85 int + gvar86 int + flag87 bool + flag88 bool + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + obj102 ns.ObjectID + obj103 ns.ObjectID + obj104 ns.ObjectID + obj105 ns.ObjectID + obj106 ns.ObjectID + obj107 ns.ObjectID + obj108 ns.ObjectID + obj109 ns.ObjectID + obj110 ns.ObjectID + gvar111 int + obj112 ns.ObjectID + gvar113 int + gvar114 int + obj115 ns.ObjectID + obj116 ns.ObjectID + obj117 ns.ObjectID + wp118 int + wp119 int + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + obj123 ns.ObjectID + obj124 ns.ObjectID + obj125 ns.ObjectID + obj126 ns.ObjectID + obj127 ns.ObjectID + obj128 ns.ObjectID + obj129 ns.ObjectID + obj130 ns.ObjectID + obj131 ns.ObjectID + obj132 ns.ObjectID + obj133 ns.ObjectID + obj134 ns.ObjectID + obj135 ns.ObjectID + obj136 ns.ObjectID + obj137 ns.ObjectID + obj138 ns.ObjectID + obj139 ns.ObjectID + obj140 ns.ObjectID + obj141 ns.ObjectID + obj142 ns.ObjectID + obj143 ns.ObjectID + obj144 ns.ObjectID + obj145 ns.ObjectID + obj146 ns.ObjectID + gvar147 int + gvar148 int + gvar149 int + gvar150 int + obj151 ns.ObjectID + obj152 ns.ObjectID + obj153 ns.ObjectID + obj154 ns.ObjectID + obj155 ns.ObjectID + obj156 ns.ObjectID + obj157 ns.ObjectID + obj158 ns.ObjectID + obj159 ns.ObjectID + obj160 ns.ObjectID + gvar161 int + wp162 ns.WaypointID + wp163 ns.WaypointID + wp164 ns.WaypointID + wp165 ns.WaypointID + wp166 ns.WaypointID + wp167 ns.WaypointID + wp168 ns.WaypointID + gvar169 int + gvar170 int + gvar171 int + gvar172 int + gvar173 int + gvar174 int + wp175 ns.WaypointID + wp176 ns.WaypointID + wp177 ns.WaypointID + wp178 ns.WaypointID + wp179 ns.WaypointID + wp180 ns.WaypointID + wp181 ns.WaypointID + wp182 ns.WaypointID + wp183 ns.WaypointID + wp184 ns.WaypointID + wp185 ns.WaypointID + wp186 ns.WaypointID + wp187 ns.WaypointID + wp188 ns.WaypointID + wp189 ns.WaypointID + wp190 ns.WaypointID + wp191 ns.WaypointID + wp192 ns.WaypointID + wp193 ns.WaypointID + wp194 ns.WaypointID + wp195 ns.WaypointID + ivar196 int +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + gvar9 = 5 + gvar10 = 0 + gvar11 = 1 + gvar12 = 0 + gvar13 = 1 + gvar14 = 0 + gvar15 = 1 + gvar16 = 2 + gvar17 = 3 + gvar18 = 4 + gvar19 = 5 + gvar20 = 0 + gvar21 = 1 + gvar22 = 2 + gvar23 = 3 + gvar24 = 0 + gvar25 = 1 + gvar26 = 0 + gvar27 = 1 + gvar28 = 2 + gvar29 = 3 + ivar68 = 0 + gvar69 = 0 + gvar70 = 0 + flag71 = false + gvar72 = gvar4 + gvar73 = gvar10 + gvar74 = gvar12 + gvar75 = gvar20 + gvar76 = gvar14 + gvar77 = gvar24 + gvar84 = 0 + gvar85 = 0 + gvar86 = 0 + flag88 = false + ivar196 = 0 +} +func OgreDeath() { + ivar68 += 1 + if !(ivar68 >= 4) { + goto LABEL1 + } + ns.ObjectGroupOff(gvar67) + SetTownDialog() + ns.CreatureGuard(obj102, ns.GetWaypointX(wp164), ns.GetWaypointY(wp164), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.Music(23, 100) +LABEL1: + return +} +func SetTownDialog() { + ns.SetDialog(obj152, ns.NORMAL, Villager1Start, Villager1End) + ns.StoryPic(obj152, "MalePic8") + ns.SetDialog(obj153, ns.NORMAL, Villager2Start, Villager2End) + ns.StoryPic(obj153, "MalePic3") + ns.SetDialog(obj154, ns.NORMAL, Villager3Start, Villager3End) + ns.StoryPic(obj154, "MalePic2") + ns.SetDialog(obj155, ns.NORMAL, Villager4Start, Villager4End) + ns.StoryPic(obj155, "MalePic14") + ns.SetDialog(obj156, ns.NORMAL, Villager5Start, Villager5End) + ns.StoryPic(obj156, "MalePic9") +} +func CaptainGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp32) + v1 = ns.GetWaypointY(wp32) + v2 = ns.GetObjectX(ns.GetHost()) + v3 = ns.GetObjectY(ns.GetHost()) + ns.CreatureGuard(obj93, v0, v1, v2, v3, 0) +} +func EnterCaptainArea() { + if !(ns.IsCaller(ns.GetHost()) && flag71 == false) { + goto LABEL1 + } + flag71 = true + LetterBoxOn() + ns.Frozen(ns.GetHost(), true) + ns.Move(obj93, wp33) + ns.FrameTimer(60, ExitCaptainArea) +LABEL1: + return +} +func ExitCaptainArea() { + ns.LookAtObject(obj93, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj93) + ns.StartDialog(obj93, ns.GetHost()) +} +func ExitCaptainArea2() { + LetterBoxOff() + CaptainGuard() + ns.FrameTimer(30, ExitCaptainArea3) +} +func ExitCaptainArea3() { + ns.Frozen(ns.GetHost(), false) +} +func CheckForHorvath() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if ns.GetQuestStatus("Wiz05B:GotHorvath") != 1 { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), ns.ObjectID(wp39)) // FIXME + ns.WideScreen(true) + ns.Move(obj93, wp39) +LABEL1: + return +} +func CaptainCongrat() { + if !ns.IsCaller(obj93) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.SetDialog(obj93, ns.NEXT, CaptainCongratStart, CaptainCongratEnd) + ns.Frozen(obj93, true) + ns.CreatureIdle(obj93) + ns.LookAtObject(obj93, ns.GetHost()) + ns.StartDialog(obj93, ns.GetHost()) +LABEL1: + return +} +func CaptainCongratStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz05B.scr:CaptainReturned") +} +func CaptainCongratEnd() { + ns.CancelDialog(obj93) + ns.StoryPic(obj57, "HorvathPic") + ns.SetDialog(obj57, ns.NORMAL, HorvathCongratStart, HorvathCongratEnd) + ns.Pickup(ns.GetHost(), obj58) + ns.StartDialog(obj57, ns.GetHost()) +} +func HorvathCongratStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz05B.scr:HorvathIdle") +} +func HorvathCongratEnd() { + ns.CancelDialog(obj57) + ns.GiveXp(ns.GetHost(), 1000) + ns.WideScreen(false) + ns.Blind() + ns.Frozen(ns.GetHost(), false) + ns.MakeEnemy(obj57) + ns.FrameTimer(45, ChangeMaps) +} +func ChangeMaps() { + ns.MoveObject(ns.GetHost(), 3955, 1051) +} +func KillCorpses() { + ns.FrameTimer(30, KillCorpses2) +} +func SwordsmanStart() { + var v0 int + ns.Frozen(obj116, true) + ns.CreatureIdle(obj116) + ns.LookAtObject(obj116, ns.GetHost()) + v0 = gvar74 + if v0 == gvar12 { + goto LABEL1 + } + if v0 == gvar13 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj116, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SwordsmanGreeting") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj116, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SwordsmanEnd") + goto LABEL3 +LABEL3: + return +} +func SwordsmanEnd() { + var v0 int + ns.Frozen(obj116, false) + ns.CreatureGuard(obj116, ns.GetWaypointX(wp162), ns.GetWaypointY(wp162), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) + v0 = gvar74 + if v0 == gvar12 { + goto LABEL1 + } + if v0 == gvar13 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.FrameTimer(1, SwordsmanTriggerC) + gvar74 = gvar13 + goto LABEL3 +LABEL2: + ns.LookAtDirection(obj116, ns.NE) + goto LABEL3 +LABEL3: + return +} +func DrunkStart() { + ns.LookAtObject(ns.GetTrigger(), ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:DrunkGreeting") +} +func DrunkEnd() { + ns.LookAtDirection(ns.GetTrigger(), ns.NW) +} +func FarmerStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + _ = v1 + _ = v0 + v2 = gvar72 + if v2 == gvar4 { + goto LABEL1 + } + if v2 == gvar5 { + goto LABEL2 + } + if v2 == gvar6 { + goto LABEL3 + } + if v2 == gvar7 { + goto LABEL4 + } + if v2 == gvar8 { + goto LABEL5 + } + if v2 == gvar9 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + if !ns.HasItem(ns.GetHost(), obj101) { + goto LABEL8 + } + gvar72 = gvar7 + ns.SetDialog(obj102, ns.NORMAL, FarmerStart, FarmerEnd) + FarmerStart() + goto LABEL7 + goto LABEL2 +LABEL8: + ns.CreatureIdle(obj102) + ns.LookAtObject(obj102, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerGreeting") + goto LABEL7 +LABEL2: + ns.CreatureIdle(obj102) + ns.LookAtObject(obj102, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerGreeting") + goto LABEL7 +LABEL3: + ns.CreatureIdle(obj102) + ns.LookAtObject(obj102, ns.GetHost()) + if !ns.HasItem(ns.GetHost(), obj101) { + goto LABEL9 + } + v0 = ns.GetWaypointX(wp164) + v1 = ns.GetWaypointY(wp164) + gvar72 = gvar7 + FarmerStart() + goto LABEL4 +LABEL9: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWaiting") + goto LABEL7 +LABEL4: + ns.CreatureIdle(obj102) + ns.LookAtObject(obj102, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerReturned") + goto LABEL7 +LABEL5: + ns.CreatureIdle(obj102) + ns.LookAtObject(obj102, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerIdle") + goto LABEL7 +LABEL6: + if !ns.HasItem(ns.GetHost(), obj101) { + goto LABEL10 + } + gvar72 = gvar7 + FarmerStart() + goto LABEL7 +LABEL10: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerHuffy") + goto LABEL7 +LABEL7: + return +} +func FarmerEnd() { + var ( + v0 int + v1 int + v2 int + v3 ns.ObjectID + v4 int + ) + v0 = 0 + v1 = 1 + v2 = 2 + v3 = 0 + v0 = ns.GetAnswer(obj102) + v4 = gvar72 + if v4 == gvar4 { + goto LABEL1 + } + if v4 == gvar5 { + goto LABEL2 + } + if v4 == gvar6 { + goto LABEL3 + } + if v4 == gvar7 { + goto LABEL4 + } + if v4 == gvar8 { + goto LABEL5 + } + if v4 == gvar9 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + if v0 != v1 { + goto LABEL8 + } + gvar72 = gvar6 + ns.SetDialog(obj102, ns.NORMAL, FarmerStart, FarmerEnd) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "War05Quest8", 2) + goto LABEL7 + goto LABEL2 +LABEL8: + if v0 != v2 { + goto LABEL9 + } + ns.SetDialog(obj102, ns.YESNO, FarmerStart, FarmerEnd) + gvar72 = gvar5 + goto LABEL7 + goto LABEL2 +LABEL9: + if obj102 != v3 { + goto LABEL2 + } + gvar72 = gvar4 +LABEL2: + if v0 != v1 { + goto LABEL10 + } + gvar72 = gvar6 + ns.SetDialog(obj102, ns.NORMAL, FarmerStart, FarmerEnd) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "War05Quest8", 2) + goto LABEL7 + goto LABEL3 +LABEL10: + if v0 != v2 { + goto LABEL11 + } + ns.SetDialog(obj102, ns.NORMAL, FarmerStart, FarmerEnd) + gvar72 = gvar9 + goto LABEL7 + goto LABEL3 +LABEL11: + if obj102 != v3 { + goto LABEL3 + } + gvar72 = gvar4 +LABEL3: + goto LABEL7 +LABEL4: + ns.JournalEdit(ns.GetHost(), "War05Quest8", 4) + ns.PrintToAll("War05A.scr:ObjectiveComplete") + ns.GiveXp(ns.GetHost(), 250) + ns.Pickup(ns.GetHost(), obj99) + ns.Delete(obj101) + EndCurse() + gvar72 = gvar8 + goto LABEL7 +LABEL5: + goto LABEL7 +LABEL6: + goto LABEL7 +LABEL7: + return +} +func HoundStart() { + ns.CreatureIdle(obj103) + ns.LookAtObject(obj103, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:HoundGreeting") +} +func HoundEnd() { + ns.SetRoamFlag(obj103, 2) + ns.Wander(obj103) +} +func FarmerWifeStart() { + var v0 int + v0 = gvar73 + if v0 == gvar10 { + goto LABEL1 + } + if v0 == gvar11 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj104, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWifeGreeting") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj104, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FarmerWifeIdle") + goto LABEL3 +LABEL3: + return +} +func FarmerWifeEnd() { + var v0 int + v0 = gvar73 + if v0 == gvar10 { + goto LABEL1 + } + if v0 == gvar11 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar73 = gvar11 + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func CaptainStart() { + var v0 int + v0 = gvar77 + if v0 == gvar24 { + goto LABEL1 + } + if v0 == gvar25 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj93, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj93) + ns.TellStory(ns.SwordsmanHurt, "Wiz05A.scr:CaptainGreeting") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj93, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj93) + ns.TellStory(ns.SwordsmanHurt, "Wiz05A.scr:CaptainWaiting") + goto LABEL3 +LABEL3: + return +} +func CaptainEnd() { + var v0 int + v0 = gvar77 + if v0 == gvar24 { + goto LABEL1 + } + if v0 == gvar25 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "Wiz05Quest1", 2) + ExitCaptainArea2() + gvar77 = gvar25 + goto LABEL3 +LABEL2: + goto LABEL3 +LABEL3: + return +} +func BartenderStart() { + ns.Frozen(obj95, true) + ns.LookAtObject(obj95, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj95) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:BartenderGreeting") +} +func BartenderEnd() { + ns.Frozen(obj95, false) + ns.LookAtDirection(obj95, ns.SE) +} +func EndCurse() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp164) + v9 = ns.GetWaypointY(wp164) + v0 = ns.GetWaypointX(wp180) + v1 = ns.GetWaypointY(wp180) + v2 = ns.GetWaypointX(wp178) + v3 = ns.GetWaypointY(wp178) + v6 = ns.GetWaypointX(wp179) + v7 = ns.GetWaypointY(wp179) + v4 = ns.GetObjectX(obj103) + v5 = ns.GetObjectY(obj103) + ns.Frozen(ns.GetHost(), true) + LetterBoxOn() + ns.AudioEvent(ns.CurePoisonCast, wp164) + ns.AudioEvent(ns.CurePoisonEffect, wp164) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(10, EndCurse2) +} +func EndCurse2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp164) + v9 = ns.GetWaypointY(wp164) + v0 = ns.GetWaypointX(wp180) + v1 = ns.GetWaypointY(wp180) + v2 = ns.GetWaypointX(wp178) + v3 = ns.GetWaypointY(wp178) + v6 = ns.GetWaypointX(wp179) + v7 = ns.GetWaypointY(wp179) + v4 = ns.GetObjectX(obj103) + v5 = ns.GetObjectY(obj103) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(7, EndCurse3) +} +func EndCurse3() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + _ = v7 + _ = v6 + _ = v3 + _ = v2 + _ = v1 + _ = v0 + v8 = ns.GetWaypointX(wp164) + v9 = ns.GetWaypointY(wp164) + v0 = ns.GetWaypointX(wp180) + v1 = ns.GetWaypointY(wp180) + v2 = ns.GetWaypointX(wp178) + v3 = ns.GetWaypointY(wp178) + v6 = ns.GetWaypointX(wp179) + v7 = ns.GetWaypointY(wp179) + v4 = ns.GetObjectX(obj103) + v5 = ns.GetObjectY(obj103) + ns.Effect(ns.LIGHTNING, v8, v9, v4, v5) + ns.FrameTimer(3, EndCurse4) +} +func EndCurse4() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + ) + v8 = ns.GetWaypointX(wp164) + v9 = ns.GetWaypointY(wp164) + v0 = ns.GetWaypointX(wp180) + v1 = ns.GetWaypointY(wp180) + v2 = ns.GetWaypointX(wp178) + v3 = ns.GetWaypointY(wp178) + v6 = ns.GetWaypointX(wp179) + v7 = ns.GetWaypointY(wp179) + v4 = ns.GetObjectX(obj103) + v5 = ns.GetObjectY(obj103) + ns.Effect(ns.BLUE_SPARKS, v4, v5, 0, 0) + ns.MoveObject(obj103, v0, v1) + ns.MoveObject(obj104, v4, v5) + ns.CreatureGuard(obj104, v2, v3, v6, v7, 0) + ns.CreatureGuard(obj102, v8, v9, v8, v9, 0) +} +func EndCurse5() { + if !ns.IsCaller(obj104) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LookAtObject(obj104, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj104) + ns.StartDialog(obj104, ns.GetHost()) +LABEL1: + return +} +func FrogStart() { + var v0 int + v0 = gvar75 + if v0 == gvar20 { + goto LABEL1 + } + if v0 == gvar21 { + goto LABEL2 + } + if v0 == gvar22 { + goto LABEL3 + } + if v0 == gvar23 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.LookAtObject(obj106, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogGreeting") + ns.Frozen(obj106, false) + ns.ObjectOff(obj108) + ns.ObjectOff(obj109) + ns.ObjectOff(obj110) + ns.ObjectOn(obj106) + ns.CreatureFollow(obj106, ns.GetHost()) + goto LABEL5 +LABEL2: + ns.LookAtObject(obj106, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogFollowing") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj106, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogThanks") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj106, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:FrogIdle") + goto LABEL5 +LABEL5: + return +} +func FrogEnd() { + var v0 int + v0 = gvar75 + if v0 == gvar20 { + goto LABEL1 + } + if v0 == gvar21 { + goto LABEL2 + } + if v0 == gvar22 { + goto LABEL3 + } + if v0 == gvar23 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar75 = gvar21 + goto LABEL5 +LABEL2: + goto LABEL5 +LABEL3: + gvar75 = gvar23 + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func FrogGuard() { + if !ns.IsCaller(obj106) { + goto LABEL1 + } + if flag88 { + goto LABEL1 + } + flag88 = true + gvar75 = gvar22 + ns.Enchant(obj106, ns.ENCHANT_INVULNERABLE, 0) + gvar76 = gvar16 + ns.SetDialog(obj105, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + ns.StartDialog(obj105, ns.GetHost()) + gvar86 = 1 +LABEL1: + return +} +func Villager1Start() { + ns.Frozen(obj152, true) + ns.CreatureIdle(obj152) + ns.LookAtObject(obj152, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman9Talk01") +} +func Villager1End() { + ns.Frozen(obj152, false) + ns.Wander(obj152) +} +func Villager2Start() { + ns.Frozen(obj153, true) + ns.CreatureIdle(obj153) + ns.LookAtObject(obj153, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman10Talk01") +} +func Villager2End() { + ns.Frozen(obj153, false) + ns.Wander(obj153) +} +func Villager3Start() { + ns.Frozen(obj154, true) + ns.CreatureIdle(obj154) + ns.LookAtObject(obj154, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman11Talk01") +} +func Villager3End() { + ns.Frozen(obj154, false) + ns.Wander(obj154) +} +func Villager4Start() { + ns.Frozen(obj155, true) + ns.CreatureIdle(obj155) + ns.LookAtObject(obj155, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con05:Townsman11Talk02") +} +func Villager4End() { + ns.Frozen(obj155, false) + ns.Wander(obj155) +} +func Villager5Start() { + ns.Frozen(obj156, true) + ns.CreatureIdle(obj156) + ns.LookAtObject(obj156, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:VillagerGreeting") +} +func Villager5End() { + ns.Frozen(obj156, false) + ns.Wander(obj156) +} +func SadVillagerStart() { + var ( + v0 float32 + v1 float32 + v2 int + ) + _ = v1 + _ = v0 + v2 = gvar76 + if v2 == gvar14 { + goto LABEL1 + } + if v2 == gvar15 { + goto LABEL2 + } + if v2 == gvar16 { + goto LABEL3 + } + if v2 == gvar17 { + goto LABEL4 + } + if v2 == gvar18 { + goto LABEL5 + } + if v2 == gvar19 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.LookAtObject(obj105, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerGreeting") + goto LABEL7 +LABEL2: + ns.LookAtObject(obj105, ns.GetHost()) + if gvar86 != 1 { + goto LABEL8 + } + v0 = ns.GetWaypointX(wp175) + v1 = ns.GetWaypointY(wp175) + ns.AudioEvent(ns.CurePoisonCast, wp175) + ns.AudioEvent(ns.CurePoisonEffect, wp175) + gvar76 = gvar16 + ns.SetDialog(obj105, ns.NEXT, SadVillagerStart, SadVillagerEnd) + ns.CreatureFollow(obj106, obj105) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerReturned") + goto LABEL3 +LABEL8: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerWaiting") + goto LABEL7 +LABEL3: + ns.LookAtObject(obj105, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerReturned") + goto LABEL7 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerIdle") + goto LABEL7 +LABEL5: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerDead") + goto LABEL7 +LABEL6: + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:SadVillagerDeadIdle") + goto LABEL7 +LABEL7: + return +} +func SadVillagerEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + ) + _ = v3 + _ = v2 + _ = v1 + v0 = 0 + v1 = 1 + v2 = 2 + v3 = 0 + v0 = ns.GetAnswer(obj105) + v4 = gvar76 + if v4 == gvar14 { + goto LABEL1 + } + if v4 == gvar15 { + goto LABEL2 + } + if v4 == gvar16 { + goto LABEL3 + } + if v4 == gvar17 { + goto LABEL4 + } + if v4 == gvar18 { + goto LABEL5 + } + if v4 == gvar19 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + if v0 != 1 { + goto LABEL8 + } + gvar76 = gvar15 + ns.SetDialog(obj105, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + ns.JournalEntry(ns.GetHost(), "War05Quest9", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + goto LABEL7 +LABEL8: + if v0 != 2 { + goto LABEL9 + } + gvar76 = gvar14 + ns.SetDialog(obj105, ns.YESNO, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL9: + if v0 != 0 { + goto LABEL2 + } + gvar76 = gvar14 + ns.SetDialog(obj105, ns.YESNO, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL2: + ns.SetDialog(obj105, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL3: + gvar76 = gvar17 + ns.SetDialog(obj105, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + ns.JournalEdit(ns.GetHost(), "War05Quest9", 4) + ns.PrintToAll("War05A.scr:ObjectiveComplete") + ns.GiveXp(ns.GetHost(), 250) + ns.Pickup(ns.GetHost(), obj98) + ns.FrameTimer(1, FrogThanksPlayer) + ns.FrameTimer(1, SadVillagerGuard) + goto LABEL7 +LABEL4: + ns.SetDialog(obj105, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL5: + gvar76 = gvar19 + ns.Move(obj105, wp175) + ns.SetCallback(obj105, 9, DummyBump) + ns.JournalDelete(ns.GetHost(), "War05Quest9") + ns.PrintToAll("War05A.scr:ObjectiveFailed") + ns.SetDialog(obj105, ns.NORMAL, SadVillagerStart, SadVillagerEnd) + goto LABEL7 +LABEL6: + ns.CancelDialog(obj105) + goto LABEL7 +LABEL7: + return +} +func OwnVillagers() { + ns.FrameTimer(1, OwnVillagers2) +} +func OwnVillagers2() { + ns.Frozen(obj152, true) + ns.Frozen(obj153, true) + ns.Frozen(obj154, true) + ns.Frozen(obj155, true) + ns.Frozen(obj156, true) + ns.Frozen(obj157, true) + ns.Frozen(obj158, true) + ns.Frozen(obj159, true) + ns.Frozen(obj160, true) + ns.Frozen(obj51, true) + ns.Frozen(obj52, true) + ns.Frozen(obj49, true) + ns.Frozen(obj50, true) + ns.Frozen(obj53, true) +} +func KillCorpses2() { + ns.Damage(obj120, 0, 300, 5) + ns.Damage(obj121, 0, 300, 5) + ns.Damage(obj122, 0, 300, 5) + ns.Damage(obj123, 0, 300, 5) + ns.Damage(obj124, 0, 300, 5) + ns.Damage(obj125, 0, 300, 5) + ns.Damage(obj126, 0, 300, 5) + ns.Damage(obj127, 0, 300, 5) + ns.Damage(obj128, 0, 300, 5) + ns.Damage(obj129, 0, 300, 5) + ns.Damage(obj130, 0, 300, 5) + ns.Damage(obj131, 0, 300, 5) + ns.Damage(obj132, 0, 300, 5) + ns.Damage(obj133, 0, 300, 5) + ns.Damage(obj134, 0, 300, 5) + ns.Damage(obj135, 0, 300, 0) + ns.Damage(obj136, 0, 300, 0) + ns.Damage(obj137, 0, 300, 0) + ns.Damage(obj115, 0, 300, 0) + ns.Damage(obj46, 0, 300, 0) + ns.Damage(obj47, 0, 300, 0) + ns.Damage(obj59, 0, 300, 0) + ns.Damage(obj60, 0, 300, 0) + ns.Damage(obj61, 0, 300, 0) + ns.Damage(obj62, 0, 300, 0) + ns.Damage(obj63, 0, 300, 0) + ns.Damage(obj64, 0, 300, 0) +} +func VillagePath() { + ns.Wander(obj152) + ns.Wander(obj153) + ns.Wander(obj154) + ns.Wander(obj155) + ns.Wander(obj156) +} +func EnableElevator() { + ns.ObjectOn(obj151) +} +func DisableElevator() { + ns.ObjectOff(obj151) +} +func StartSwordsmanTrigger() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.FrameTimer(1, SwordsmanTrigger) +LABEL1: + return +} +func SwordsmanTrigger() { + ns.AggressionLevel(obj116, 0.83) + ns.AggressionLevel(obj54, 0.83) + ns.AggressionLevel(obj48, 0.83) + ns.Attack(obj48, obj116) + ns.CreatureHunt(obj48) +} +func SwordsmanTriggerB() { + gvar74 = gvar12 + ns.SetDialog(obj116, ns.NORMAL, SwordsmanStart, SwordsmanEnd) + ns.StoryPic(obj116, "Warrior8Pic") + ns.FrameTimer(1, SwordsmanTriggerC) +} +func SwordsmanTriggerC() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp162) + v1 = ns.GetWaypointY(wp162) + v2 = ns.GetWaypointX(wp163) + v3 = ns.GetWaypointY(wp163) + ns.CreatureGuard(obj116, v0, v1, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) + ns.CreatureGuard(obj54, v2, v3, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 240) +} +func ShopKeeperGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp192) + v1 = ns.GetWaypointY(wp192) + v2 = ns.GetWaypointX(wp193) + v3 = ns.GetWaypointY(wp193) + ns.CreatureGuard(obj96, v0, v1, v2, v3, 0) + ns.FrameTimer(1, GypsyGuard) +} +func BartenderGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp194) + v1 = ns.GetWaypointY(wp194) + v2 = ns.GetWaypointX(wp195) + v3 = ns.GetWaypointY(wp195) + ns.CreatureGuard(obj95, v0, v1, v2, v3, 0) + ns.FrameTimer(1, SadVillagerGuard) +} +func GypsyGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp190) + v1 = ns.GetWaypointY(wp190) + v2 = ns.GetWaypointX(wp191) + v3 = ns.GetWaypointY(wp191) + ns.CreatureGuard(obj94, v0, v1, v2, v3, 0) + ns.FrameTimer(1, BartenderGuard) +} +func SadVillagerGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp175) + v1 = ns.GetWaypointY(wp175) + v2 = ns.GetWaypointX(wp176) + v3 = ns.GetWaypointY(wp176) + ns.CreatureGuard(obj105, v0, v1, v2, v3, 0) +} +func OpenGates() { + ns.WallOpen(ns.Wall(88, 34)) + ns.WallOpen(ns.Wall(87, 35)) + ns.WallOpen(ns.Wall(88, 36)) + ns.WallOpen(ns.Wall(89, 35)) + ns.PrintToAll("War05A.scr:CityGatesOpen") +} +func CloseGates() { + ns.WallClose(ns.Wall(88, 34)) + ns.WallClose(ns.Wall(87, 35)) + ns.WallClose(ns.Wall(88, 36)) + ns.WallClose(ns.Wall(89, 35)) + ns.PrintToAll("War05A.scr:CityGatesClosed") +} +func NoBump() { + flag87 = false + ns.FrameTimer(90, YesBump) +} +func YesBump() { + flag87 = true +} +func BumpVillager() { +} +func LetterBoxOn() { + ns.WideScreen(true) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func FrogThanksPlayer() { + ns.StartDialog(obj106, ns.GetHost()) +} +func DummyBump() { +} +func FreePlayer() { + ns.Frozen(ns.GetHost(), false) +} +func HorvathAppears() { + ns.Frozen(ns.GetHost(), true) + LetterBoxOn() + ns.FrameTimer(30, HorvathAppears2) + ns.FrameTimer(1, VillagePath) +} +func HorvathAppears2() { + ns.Move(obj93, wp181) + ns.FrameTimer(45, HorvathAppears3) +} +func HorvathAppears3() { + ns.Frozen(obj93, true) + ns.CreatureIdle(obj93) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(obj93, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj93) + ns.StartDialog(obj93, ns.GetHost()) +} +func HorvathAppears4() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp183) + v1 = ns.GetWaypointY(wp183) + v2 = ns.GetWaypointX(wp181) + v3 = ns.GetWaypointY(wp181) + ns.Frozen(obj93, false) + ns.CreatureGuard(obj93, v0, v1, v2, v3, 0) + LetterBoxOff() + ns.FrameTimer(45, HorvathAppears5) +} +func HorvathAppears5() { + ns.Frozen(ns.GetHost(), false) +} +func HorvathDeath() { + ns.PrintToAll("Wiz05C.scr:ObjectiveFailed") + ns.FrameTimer(30, PlayerDeath) +} +func MapInitialize() { + gvar66 = ns.ObjectGroup("ExitEnemies") + wp30 = ns.Waypoint("WoundedRefugeeWayPoint") + wp31 = ns.Waypoint("WoundedRefugeeWayPoint2") + wp32 = ns.Waypoint("CaptainWayPoint") + wp33 = ns.Waypoint("CaptainWayPoint2") + wp34 = ns.Waypoint("DeadGuyWP") + wp35 = ns.Waypoint("PlayerSounds") + wp36 = ns.Waypoint("LunchOgre1WP") + wp37 = ns.Waypoint("LunchOgre2WP") + wp38 = ns.Waypoint("CaptainWaitingWP") + wp39 = ns.Waypoint("CaptainCongratWP") + obj43 = ns.Object("WoundedRefugee") + obj44 = ns.Object("WoundedRefugee2") + obj45 = ns.Object("Antidote") + obj40 = ns.Object("WellWP") + wp41 = ns.Waypoint("OgressYell1WP") + wp42 = ns.Waypoint("OgressYell2WP") + obj46 = ns.Object("Kill") + obj47 = ns.Object("Kill2") + obj48 = ns.Object("FirstOgre") + obj49 = ns.Object("LunchOgre1") + obj50 = ns.Object("LunchOgre2") + obj51 = ns.Object("TownOgre1") + obj52 = ns.Object("TownOgre2") + obj53 = ns.Object("DeadGuy") + obj54 = ns.Object("Swordsman2") + obj55 = ns.Object("Archer1") + obj56 = ns.Object("Archer2") + obj58 = ns.Object("CapReward") + obj59 = ns.Object("Bubbles1") + obj60 = ns.Object("Bubbles2") + obj61 = ns.Object("Bubbles3") + obj62 = ns.Object("Bubbles4") + obj63 = ns.Object("Bubbles5") + obj64 = ns.Object("Bubbles6") + gvar65 = ns.ObjectGroup("OgreAttackTriggers") + obj93 = ns.Object("W5Captain") + obj95 = ns.Object("W5Bartender") + obj96 = ns.Object("W5ShopKeeper") + obj94 = ns.Object("W5Gypsy") + obj116 = ns.Object("W5Swordsman") + obj117 = ns.Object("W5Swordsman2") + wp118 = int(ns.Object("SwordsmanTrigger1")) + wp119 = int(ns.Object("SwordsmanTrigger2")) + obj115 = ns.Object("KeyGuy") + obj112 = ns.Object("W5Drunk1") + obj98 = ns.Object("SadVillagerReward") + obj99 = ns.Object("FarmerReward1") + obj100 = ns.Object("FarmerReward2") + obj102 = ns.Object("W5Farmer") + obj105 = ns.Object("W5SadVillager") + obj106 = ns.Object("W5Frog") + obj107 = ns.Object("FrogTrigger") + obj101 = ns.Object("FarmerStaff") + obj120 = ns.Object("Corpse1") + obj121 = ns.Object("Corpse2") + obj122 = ns.Object("Corpse3") + obj123 = ns.Object("Corpse4") + obj124 = ns.Object("Corpse5") + obj125 = ns.Object("Corpse6") + obj126 = ns.Object("Corpse7") + obj127 = ns.Object("Corpse8") + obj128 = ns.Object("Corpse9") + obj129 = ns.Object("Corpse10") + obj130 = ns.Object("Corpse11") + obj131 = ns.Object("Corpse12") + obj132 = ns.Object("Corpse13") + obj133 = ns.Object("Corpse14") + obj134 = ns.Object("Corpse15") + obj97 = ns.Object("JackLine5Trigger") + obj135 = ns.Object("OgreCorpse1") + obj136 = ns.Object("OgreCorpse2") + obj137 = ns.Object("OgreCorpse3") + obj151 = ns.Object("EntranceElevator") + obj138 = ns.Object("Ogre1") + obj139 = ns.Object("Ogre2") + obj140 = ns.Object("Ogre3") + obj141 = ns.Object("Ogre4") + obj142 = ns.Object("Ogre5") + obj143 = ns.Object("Ogre6") + obj144 = ns.Object("Ogre7") + obj145 = ns.Object("Ogre8") + obj146 = ns.Object("Ogre9") + obj146 = ns.Object("Ogre10") + obj146 = ns.Object("Ogre11") + obj146 = ns.Object("Ogre12") + obj146 = ns.Object("Ogre13") + obj152 = ns.Object("W5Villager1") + obj153 = ns.Object("W5Villager2") + obj154 = ns.Object("W5Villager3") + obj155 = ns.Object("W5Villager4") + obj156 = ns.Object("W5Villager5") + obj157 = ns.Object("W5Villager6") + obj158 = ns.Object("W5Villager7") + obj159 = ns.Object("W5Villager8") + obj160 = ns.Object("W5Villager9") + wp163 = ns.Waypoint("Swordsman2WayPoint") + wp162 = ns.Waypoint("SwordsmanWayPoint") + wp118 = int(ns.Waypoint("SwordsmanTrigger1")) + wp119 = int(ns.Waypoint("SwordsmanTrigger2")) + wp181 = ns.Waypoint("HorvathWayPoint") + wp182 = ns.Waypoint("HorvathWayPoint2") + wp183 = ns.Waypoint("HorvathAppears") + wp164 = ns.Waypoint("FarmerWayPoint") + wp165 = ns.Waypoint("Farmer2WayPoint") + wp178 = ns.Waypoint("FarmerWifeWayPoint") + wp179 = ns.Waypoint("FarmerWife2WayPoint") + wp166 = ns.Waypoint("HoundWayPoint") + wp180 = ns.Waypoint("Hound2WayPoint") + wp177 = ns.Waypoint("WoundedVillagerWayPoint") + wp175 = ns.Waypoint("SadVillagerWayPoint") + wp176 = ns.Waypoint("SadVillagerWayPoint2") + wp167 = ns.Waypoint("FrogWayPoint1") + wp168 = ns.Waypoint("FrogWayPoint2") + wp184 = ns.Waypoint("Villager1Goal") + wp185 = ns.Waypoint("Villager2Goal") + wp186 = ns.Waypoint("Villager3Goal") + wp187 = ns.Waypoint("Villager4Goal") + wp188 = ns.Waypoint("Villager5Goal") + wp190 = ns.Waypoint("GypsyWayPoint") + wp191 = ns.Waypoint("GypsyWayPoint2") + wp192 = ns.Waypoint("ShopKeeperWayPoint") + wp193 = ns.Waypoint("ShopKeeperWayPoint2") + wp194 = ns.Waypoint("BartenderWayPoint") + wp195 = ns.Waypoint("BartenderWayPoint2") + gvar67 = ns.ObjectGroup("OgressYellTriggerGroup") + wp189 = ns.Waypoint("PlayerStartWayPoint") + ns.SetDialog(obj112, ns.NORMAL, DrunkStart, DrunkEnd) + ns.StoryPic(obj112, "Townsman3Pic") + ns.SetDialog(obj105, ns.YESNO, SadVillagerStart, SadVillagerEnd) + ns.StoryPic(obj105, "GerardPic") + ns.SetDialog(obj106, ns.NORMAL, FrogStart, FrogEnd) + ns.StoryPic(obj106, "FrogPic") + ns.SetDialog(obj93, ns.NORMAL, CaptainStart, CaptainEnd) + ns.StoryPic(obj93, "AirshipCaptainPic") + ns.Frozen(obj106, true) + KillCorpses() + OwnVillagers() + EnableElevator() + ns.FrameTimer(90, DisableElevator) + ShopKeeperGuard() + ns.StartupScreen(5) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func FrogReturned() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + if !ns.IsCaller(obj106) { + goto LABEL1 + } + v0 = ns.GetWaypointX(wp167) + v1 = ns.GetWaypointY(wp167) + v2 = ns.GetWaypointX(wp168) + v3 = ns.GetWaypointY(wp168) + ns.ObjectOff(obj107) + ns.CreatureGuard(obj106, v0, v1, v2, v3, 0) + gvar76 = gvar15 +LABEL1: + return +} +func FrogDeath() { + gvar86 = 2 + gvar76 = gvar18 + ns.CancelDialog(obj106) +} +func AutoSave1() { + ns.AutoSave() + ns.ObjectOff(obj89) +} +func AutoSave2() { + ns.AutoSave() + ns.ObjectOff(obj90) +} +func AutoSave3() { + ns.AutoSave() + ns.FrameTimer(1, VillagePath) + ns.ObjectOff(obj91) +} +func AutoSave4() { + ns.AutoSave() + ns.ObjectOff(obj92) +} +func SecretFound() { + ns.PrintToAll("War05A.scr:Secret") + ns.MoveWaypoint(wp35, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp35) + ns.GiveXp(ns.GetHost(), 250) +} +func Hint() { + ns.PrintToAll("Journal:War05Hint1") + ns.JournalEntry(ns.GetHost(), "War05Hint1", 4) +} +func PlayerDeath() { + ns.DeathScreen(5) +} +func MapEntry() { + ns.Music(23, 100) + ns.Frozen(ns.GetHost(), false) + LetterBoxOff() + if ns.GetQuestStatus("Wiz05B:GotHorvath") != 1 { + goto LABEL1 + } + ns.MoveObject(obj93, ns.GetWaypointX(wp38), ns.GetWaypointY(wp38)) + ns.CreatureGuard(obj93, ns.GetObjectX(obj93), ns.GetObjectY(obj93), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + obj57 = ns.Object("Wiz05B:Horvath") + ns.StoryPic(obj57, "HorvathPic") + ns.GroupDamage(gvar66, 0, 1000, 0) + ns.SetCallback(obj57, 5, HorvathDeath) +LABEL1: + flag87 = true +} +func OgressYell1() { + ns.AudioEvent(ns.GruntRecognize, wp41) +} +func OgressYell2() { + ns.AudioEvent(ns.GruntRecognize, wp42) +} +func CrapFile() { +} +func OgreAttackStart() { + ns.ObjectGroupOff(gvar65) + UnfreezeAll() + ns.Music(26, 100) + ns.Frozen(obj49, false) + ns.Frozen(obj50, false) + ns.Frozen(obj53, false) + ns.AggressionLevel(obj49, 0.83) + ns.AggressionLevel(obj50, 0.83) + ns.Attack(obj53, obj49) + ns.Attack(obj49, obj53) + ns.Attack(obj50, obj53) +} +func DeadGuyArrive() { + if !ns.IsCaller(obj53) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj53, true) + ns.Frozen(obj49, true) + ns.Frozen(obj50, true) + ns.CreatureIdle(obj53) + ns.CreatureIdle(obj49) + ns.CreatureIdle(obj50) + ns.LookAtObject(obj49, obj53) + ns.LookAtObject(obj53, obj50) + ns.LookAtObject(obj50, obj53) + ns.Chat(obj50, "Con05:OgreKingTalk06") + ns.SecondTimer(2, OgresAttackDeadGuy) +LABEL1: + return +} +func OgresAttackDeadGuy() { + ns.Frozen(obj53, false) + ns.Frozen(obj49, false) + ns.Frozen(obj50, false) + ns.Attack(obj53, obj50) + ns.Attack(obj49, obj53) + ns.Attack(obj50, obj53) +} +func DeadGuyDie() { + ns.AggressionLevel(obj49, 0) + ns.AggressionLevel(obj50, 0) + ns.Move(obj49, wp36) + ns.Move(obj50, wp37) + UnfreezeAll() +} +func LunchOgreReport() { + if !(ns.CurrentHealth(obj53) > 0) { + goto LABEL1 + } + ns.Attack(ns.GetTrigger(), obj53) +LABEL1: + return +} +func LunchOgre1Trigger() { + if !ns.IsCaller(obj49) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ivar196 += 1 + ns.AggressionLevel(obj49, 0.83) +LABEL1: + return +} +func LunchOgre2Trigger() { + if !ns.IsCaller(obj50) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ivar196 += 1 + ns.AggressionLevel(obj50, 0.83) +LABEL1: + return +} +func UnfreezeAll() { + ns.Frozen(obj152, false) + ns.Frozen(obj153, false) + ns.Frozen(obj154, false) + ns.Frozen(obj155, false) + ns.Frozen(obj156, false) + ns.Frozen(obj157, false) + ns.Frozen(obj158, false) + ns.Frozen(obj159, false) + ns.Frozen(obj160, false) + ns.Frozen(obj51, false) + ns.Frozen(obj52, false) + ns.Frozen(obj102, false) + ns.Wander(obj102) + ns.CreatureFollow(obj51, obj102) +} +func GoAway() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + if !(ns.CurrentHealth(ns.GetCaller()) > 0) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, ns.Waypoint("WellWP")) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz05b/dummy_test.go b/examples/wiz05b/dummy_test.go new file mode 100644 index 0000000..98824ac --- /dev/null +++ b/examples/wiz05b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz05b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz05b/wiz05b.go b/examples/wiz05b/wiz05b.go new file mode 100644 index 0000000..eb2b4e1 --- /dev/null +++ b/examples/wiz05b/wiz05b.go @@ -0,0 +1,434 @@ +package wiz05b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + gvar5 ns.WallGroupID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + wp12 ns.WaypointID + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + flag21 bool + flag22 bool + flag23 bool + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + gvar35 ns.ObjectGroupID + gvar36 ns.ObjectGroupID + gvar37 ns.ObjectGroupID + gvar38 ns.WallGroupID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID +) + +func init() { + gvar13 = 0 + gvar14 = 1 + gvar15 = 2 + gvar16 = 3 + gvar17 = 4 + gvar18 = 5 + gvar19 = gvar13 + gvar20 = gvar17 + flag21 = false + flag22 = false + flag23 = false +} +func StopElevator() { + ns.ObjectOff(obj4) + ns.FrameTimer(60, LowerKeyProtectWalls) +} +func LowerKeyProtectWalls() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar5) + ns.NoWallSound(false) +} +func RaiseKey() { + ns.ObjectOn(obj4) + ns.FrameTimer(5, StopElevator) +} +func UnlockMainGates() { + ns.ObjectOff(obj10) + ns.UnlockDoor(obj6) + ns.UnlockDoor(obj7) +} +func OpenKingGate() { + ns.ObjectOff(obj11) + ns.UnlockDoor(obj8) + ns.UnlockDoor(obj9) +} +func SecretFound() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp12, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp12) + ns.GiveXp(ns.GetHost(), 40) +} +func CallForGuards() { + ns.Frozen(obj31, true) + ns.CreatureIdle(obj31) + ns.SetDialog(obj31, ns.NEXT, KingStart, KingEnd) + ns.StoryPic(obj31, "OgreWarlordPic") + ns.StartDialog(obj31, ns.GetHost()) +} +func ProtectTheKing() { + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) + ns.EnchantOff(obj31, ns.ENCHANT_INVULNERABLE) + ns.Frozen(obj31, false) + ns.ObjectOn(obj32) + ns.ObjectOn(obj33) + ns.AggressionLevel(obj31, 0.5) + ns.MoveObject(obj32, ns.GetWaypointX(wp40), ns.GetWaypointY(wp40)) + ns.MoveObject(obj33, ns.GetWaypointX(wp41), ns.GetWaypointY(wp41)) + ns.Wander(obj32) + ns.Wander(obj33) +} +func KingStart() { + var v0 int + v0 = gvar20 + if v0 == gvar17 { + goto LABEL1 + } + if v0 == gvar18 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con05:OgreTalk07") + ns.LookAtObject(obj31, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj31) + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con05:OgreTalk08") + goto LABEL3 +LABEL3: + return +} +func KingEnd() { + var v0 int + v0 = gvar20 + if v0 == gvar17 { + goto LABEL1 + } + if v0 == gvar18 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + gvar20 = gvar18 + ns.StartDialog(obj31, ns.GetHost()) + goto LABEL3 +LABEL2: + ns.CancelDialog(obj31) + ns.CreatureGuard(obj31, ns.GetWaypointX(wp39), ns.GetWaypointY(wp39), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 400) + ProtectTheKing() + goto LABEL3 +LABEL3: + return +} +func HorvathStart() { + var v0 int + v0 = gvar19 + if v0 == gvar13 { + goto LABEL1 + } + if v0 == gvar14 { + goto LABEL2 + } + if v0 == gvar15 { + goto LABEL3 + } + if v0 == gvar16 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.DestroyChat(obj24) + ns.Frozen(obj24, true) + ns.LookAtObject(obj24, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj24) + ns.TellStory(ns.SwordsmanHurt, "Wiz05C.scr:HorvathGreeting") + goto LABEL5 +LABEL2: + ns.Frozen(obj24, true) + ns.LookAtObject(obj24, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj24) + ns.TellStory(ns.SwordsmanHurt, "Wiz05C.scr:HorvathWaiting") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj24, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj24) + ns.TellStory(ns.SwordsmanHurt, "Wiz05C.scr:HorvathFreed") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj24, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj24) + ns.TellStory(ns.SwordsmanHurt, "Wiz05C.scr:HorvathFollowing") + goto LABEL5 +LABEL5: + return +} +func HorvathEnd() { + var v0 int + v0 = gvar19 + if v0 == gvar13 { + goto LABEL1 + } + if v0 == gvar14 { + goto LABEL2 + } + if v0 == gvar15 { + goto LABEL3 + } + if v0 == gvar16 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar19 = gvar14 + ns.Frozen(obj24, false) + goto LABEL5 +LABEL2: + ns.Frozen(obj24, false) + goto LABEL5 +LABEL3: + ns.CancelDialog(obj24) + gvar19 = gvar16 + ns.AggressionLevel(obj24, 0.5) + ns.BecomePet(obj24) + ns.MakeFriendly(obj24) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar37) + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func HorvathDeath() { + ns.PrintToAll("Wiz05C.scr:ObjectiveFailed") + ns.FrameTimer(30, PlayerDeath) +} +func LetterBoxOn() { + ns.WideScreen(true) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func PlayerDeath() { + ns.DeathScreen(5) +} +func WhoDidWhat() { + if !flag23 { + goto LABEL1 + } + if !ns.IsVisibleTo(obj25, ns.GetHost()) { + goto LABEL2 + } + if !ns.IsVisibleTo(obj25, obj24) { + goto LABEL3 + } + if flag22 { + goto LABEL4 + } + flag22 = true + ns.ObjectGroupOff(gvar37) + ns.ObjectGroupOff(gvar36) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + gvar19 = gvar15 + ns.GiveXp(ns.GetHost(), 500) + ns.SetQuestStatus(1, "GotHorvath") + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.AggressionLevel(obj24, 0.5) + ns.CreatureFollow(obj24, ns.GetHost()) + ns.StartDialog(obj24, ns.GetHost()) + return +LABEL4: + goto LABEL5 +LABEL3: + if flag22 { + goto LABEL5 + } + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) +LABEL5: + goto LABEL6 +LABEL2: + if !ns.IsVisibleTo(obj25, obj24) { + goto LABEL6 + } + ns.ObjectGroupOff(gvar36) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + gvar19 = gvar14 + ns.AggressionLevel(obj24, 0.16) + ns.CreatureGuard(obj24, ns.GetWaypointX(wp42), ns.GetWaypointY(wp42), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL6: + ns.FrameTimer(25, WhoDidWhat) +LABEL1: + return +} +func MapInitialize() { + obj24 = ns.Object("Horvath") + obj25 = ns.Object("Spy") + obj26 = ns.Object("CellDoor") + obj27 = ns.Object("En") + obj28 = ns.Object("Dis") + obj6 = ns.Object("MainGate1") + obj7 = ns.Object("MainGate2") + obj29 = ns.Object("TownGate1") + obj30 = ns.Object("TownGate2") + obj8 = ns.Object("KingDoor1") + obj9 = ns.Object("KingDoor2") + obj10 = ns.Object("MainGateSwitch") + obj11 = ns.Object("KingGateSwitch") + obj31 = ns.Object("OgreKing") + obj34 = ns.Object("CallForGuardsTrigger") + obj4 = ns.Object("KeyElevator") + obj32 = ns.Object("Guard1") + obj33 = ns.Object("Guard2") + gvar35 = ns.ObjectGroup("KingTriggerGroup") + gvar36 = ns.ObjectGroup("HorvathRescueTrigger") + gvar37 = ns.ObjectGroup("AllEnemies") + gvar38 = ns.WallGroup("LordSafetyWalls") + gvar5 = ns.WallGroup("KeyProtectWalls") + wp39 = ns.Waypoint("OgreKingWaypoint") + wp40 = ns.Waypoint("Guard1WP") + wp41 = ns.Waypoint("Guard2WP") + wp42 = ns.Waypoint("HorvathSpot") + wp43 = ns.Waypoint("Spot") + wp12 = ns.Waypoint("PlayerSounds") + ns.SetDialog(obj24, ns.NORMAL, HorvathStart, HorvathEnd) + ns.StoryPic(obj24, "HorvathPic") + ns.LockDoor(obj8) + ns.LockDoor(obj9) + ns.LockDoor(obj6) + ns.LockDoor(obj7) +} +func EnableRescueTrigger() { + ns.ObjectGroupOn(gvar36) +} +func DisableRescueTrigger() { + ns.ObjectGroupOff(gvar36) +} +func RescueHorvath() { + flag22 = true + ns.ObjectGroupOff(gvar37) + ns.ObjectGroupOff(gvar36) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + gvar19 = gvar15 + ns.SetQuestStatus(1, "GotHorvath") + LetterBoxOn() + ns.Frozen(ns.GetHost(), true) + ns.AggressionLevel(obj24, 0.5) + ns.CreatureFollow(obj24, ns.GetHost()) + ns.StartDialog(obj24, ns.GetHost()) +} +func PollForRescue() { + if !(ns.IsCaller(ns.GetHost()) && flag22 == false) { + goto LABEL1 + } + flag23 = true + WhoDidWhat() +LABEL1: + return +} +func PlayerExited() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag23 = false +LABEL1: + return +} +func GotoSpot() { + if flag22 { + goto LABEL1 + } + if !ns.IsCaller(obj24) { + goto LABEL2 + } + ns.CreatureGuard(obj24, ns.GetWaypointX(wp43), ns.GetWaypointY(wp43), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL2: + if !ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.CreatureGuard(ns.GetCaller(), ns.GetWaypointX(wp43), ns.GetWaypointY(wp43), ns.GetWaypointX(wp41), ns.GetWaypointY(wp41), 0) +LABEL1: + return +} +func Activate() { + flag21 = true + ns.ObjectGroupOff(gvar35) + ns.ObjectOn(obj34) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(1, LetterBoxOn) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar38) + ns.NoWallSound(false) + ns.Move(obj31, wp39) +} +func PummelPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL1: + return +} +func MapEntry() { + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.NoWallSound(false) + ns.Music(7, 100) + if ns.GetQuestStatus("Wiz05B:GotHorvath") != 1 { + goto LABEL1 + } + obj24 = ns.Object("Wiz05B:Horvath") + ns.SetCallback(obj24, 5, HorvathDeath) +LABEL1: + return +} +func FadeOut() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.Blind() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz05c/dummy_test.go b/examples/wiz05c/dummy_test.go new file mode 100644 index 0000000..5941b38 --- /dev/null +++ b/examples/wiz05c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz05c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz05c/wiz05c.go b/examples/wiz05c/wiz05c.go new file mode 100644 index 0000000..97f3e65 --- /dev/null +++ b/examples/wiz05c/wiz05c.go @@ -0,0 +1,530 @@ +package wiz05c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.WallGroupID + gvar5 ns.WallGroupID + gvar6 ns.WallGroupID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + wp44 ns.WaypointID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + gvar52 ns.ObjectGroupID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + gvar57 int + gvar58 ns.WallGroupID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + obj76 ns.ObjectID + obj77 ns.ObjectID + obj78 ns.ObjectID + obj79 ns.ObjectID + obj80 ns.ObjectID + obj81 ns.ObjectID + obj82 ns.ObjectID + obj83 ns.ObjectID + obj84 ns.ObjectID + obj85 ns.ObjectID + obj86 ns.ObjectID + obj87 ns.ObjectID + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + gvar96 ns.WallGroupID + wp97 ns.WaypointID + wp98 ns.WaypointID + wp99 ns.WaypointID + wp100 ns.WaypointID + wp101 ns.WaypointID + wp102 ns.WaypointID + wp103 ns.WaypointID + wp104 ns.WaypointID + wp105 ns.WaypointID + wp106 ns.WaypointID + wp107 ns.WaypointID + wp108 ns.WaypointID + wp109 ns.WaypointID + wp110 ns.WaypointID + wp111 ns.WaypointID + wp112 ns.WaypointID + wp113 ns.WaypointID + wp114 ns.WaypointID + wp115 ns.WaypointID + wp116 ns.WaypointID + wp117 ns.WaypointID + wp118 ns.WaypointID + wp119 ns.WaypointID + wp120 ns.WaypointID + wp121 ns.WaypointID + gvar122 int + obj123 ns.ObjectID + obj124 ns.ObjectID + obj125 ns.ObjectID + obj126 ns.ObjectID + wp127 ns.WaypointID + wp128 ns.WaypointID + obj129 ns.ObjectID + obj130 ns.ObjectID + obj131 ns.ObjectID + obj132 ns.ObjectID + wp133 ns.WaypointID + wp134 ns.WaypointID +) + +func DisableElevators() { + ns.ObjectOff(obj24) + ns.ObjectOff(obj25) + ns.ObjectOff(obj26) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + ns.ObjectOff(obj29) +} +func EnableSkeletons() { + ns.AggressionLevel(obj30, 0.83) + ns.AggressionLevel(obj31, 0.83) + ns.AggressionLevel(obj32, 0.83) + ns.AggressionLevel(obj34, 0.83) + ns.AggressionLevel(obj35, 0.83) +} +func BreakWalls1() { + ns.WallGroupOpen(gvar4) +} +func EnableElevators1() { + ns.ObjectOn(obj24) + ns.ObjectOn(obj25) + ns.ObjectOn(obj26) + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) + ns.ObjectOn(obj29) + ns.FrameTimer(20, SkeletonGoal) + EnableSkeletons() +} +func SkeletonGoal() { + ns.Move(obj30, wp51) + ns.Move(obj31, wp51) + ns.Move(obj32, wp51) + ns.Move(obj34, wp51) + ns.Move(obj35, wp51) +} +func EndTrap1() { + ns.Move(obj9, wp41) + ns.Move(obj10, wp42) + ns.Move(obj11, wp43) + ns.Move(obj12, wp44) + ns.ObjectOff(obj36) + ns.AudioEvent(ns.EarthRumbleMinor, wp37) + ns.AudioEvent(ns.SecretWallSecret, wp37) +} +func OpenGates() { + ns.WallOpen(ns.Wall(96, 208)) + ns.WallOpen(ns.Wall(95, 209)) + ns.WallOpen(ns.Wall(94, 210)) +} +func CloseBlocks() { + ns.Move(obj7, wp45) + ns.Move(obj8, wp46) + ns.AudioEvent(ns.BoulderMove, wp38) + ns.AudioEvent(ns.EarthRumbleMinor, wp38) + ns.AudioEvent(ns.SecretWallOpen, wp38) + ns.AudioEvent(ns.StoneBlockMove, wp38) +} +func OpenBlocks() { + ns.ObjectOff(ns.GetTrigger()) + ns.Move(obj7, wp39) + ns.Move(obj8, wp40) + ns.AudioEvent(ns.BoulderMove, wp38) + ns.AudioEvent(ns.EarthRumbleMinor, wp38) + ns.AudioEvent(ns.SecretWallOpen, wp38) + ns.AudioEvent(ns.StoneBlockMove, wp38) +} +func Trap1() { + ns.ObjectOff(obj13) + ns.ObjectOff(obj14) + ns.ObjectOff(obj15) + ns.ObjectOff(obj16) + ns.ObjectOff(obj17) + ns.Move(obj9, wp47) + ns.Move(obj10, wp48) + ns.Move(obj11, wp49) + ns.Move(obj12, wp50) + ns.AudioEvent(ns.EarthRumbleMajor, wp50) + ns.SecondTimer(1, BreakWalls1) + ns.SecondTimer(2, EnableElevators1) + ns.Music(27, 100) +} +func CloseBlocks2() { + ns.Move(obj7, wp45) + ns.Move(obj8, wp46) + ns.Move(obj9, wp47) + ns.Move(obj10, wp48) +} +func LockCellDoors() { + ns.LockDoor(obj68) + ns.LockDoor(obj69) + ns.LockDoor(obj70) + ns.LockDoor(obj71) + ns.LockDoor(obj72) + ns.LockDoor(obj73) + ns.LockDoor(obj74) + ns.LockDoor(obj75) + ns.LockDoor(obj76) + ns.LockDoor(obj77) + ns.LockDoor(obj78) + ns.LockDoor(obj79) +} +func EnableSpikes() { + ns.Move(obj81, wp110) + ns.Move(obj82, wp111) + ns.Move(obj83, wp112) + ns.Move(obj84, wp113) + ns.Move(obj85, wp114) + ns.Move(obj86, wp115) + ns.Move(obj87, wp116) + ns.Move(obj88, wp117) + ns.Move(obj89, wp118) + ns.Move(obj90, wp119) + ns.Move(obj91, wp120) + ns.Move(obj92, wp121) + ns.FrameTimer(50, DisableSpikes) +} +func DisableSpikes() { + ns.Move(obj81, wp98) + ns.Move(obj82, wp99) + ns.Move(obj83, wp100) + ns.Move(obj84, wp101) + ns.Move(obj85, wp102) + ns.Move(obj86, wp103) + ns.Move(obj87, wp104) + ns.Move(obj88, wp105) + ns.Move(obj89, wp106) + ns.Move(obj90, wp107) + ns.Move(obj91, wp108) + ns.Move(obj92, wp109) + ns.FrameTimer(50, EnableSpikes) +} +func EnableGears() { + ns.ObjectOn(obj59) + ns.ObjectOn(obj60) + ns.SecondTimer(2, DisableGears) +} +func DisableGears() { + ns.ObjectOff(obj59) + ns.ObjectOff(obj60) +} +func KillSkeleton7() { + ns.Damage(obj67, 0, 1000, 0) +} +func LetterBoxOff() { + ns.WideScreen(false) +} +func PlayerDeath() { + ns.Blind() + ns.FrameTimer(30, ChapterFail2) +} +func SpikeNoise1() { + ns.AudioEvent(ns.EarthRumbleMajor, wp119) + ns.AudioEvent(ns.EarthRumbleMajor, wp113) + ns.FrameTimer(60, SpikeNoise1) +} +func HorvathDeath() { + ns.PrintToAll("Wiz05C.scr:ObjectiveFailed") + ns.FrameTimer(30, PlayerDeath) +} +func MapInitialize() { + wp133 = ns.Waypoint("Secret01WP") + wp134 = ns.Waypoint("Secret02WP") + wp97 = ns.Waypoint("FadeoutExitWP") + gvar52 = ns.ObjectGroup("BatEntryGroup") + obj53 = ns.Object("Bear1") + obj93 = ns.Object("Ogre1") + obj94 = ns.Object("Ogre2") + gvar58 = ns.WallGroup("ScorpionWallGroup") + obj7 = ns.Object("Block1") + obj8 = ns.Object("Block2") + obj9 = ns.Object("Block3") + obj10 = ns.Object("Block4") + obj11 = ns.Object("Block5") + obj12 = ns.Object("Block6") + obj18 = ns.Object("BlockMover1") + obj19 = ns.Object("BlockMover2") + obj20 = ns.Object("BlockMover3") + obj21 = ns.Object("BlockMover4") + obj22 = ns.Object("BlockMover5") + obj23 = ns.Object("BlockMover6") + obj129 = ns.Object("SilverKeyTrigger1") + obj130 = ns.Object("SilverKeyTrigger2") + obj131 = ns.Object("SilverKeyTrigger3") + obj132 = ns.Object("SilverKeyTrigger4") + gvar96 = ns.WallGroup("SilverKeyWallGroup") + obj123 = ns.Object("Grunt1") + obj124 = ns.Object("Grunt2") + obj125 = ns.Object("Grunt3") + obj126 = ns.Object("Grunt4") + gvar4 = ns.WallGroup("AmbushWallGroup") + obj61 = ns.Object("Pit1") + obj62 = ns.Object("Pit2") + obj63 = ns.Object("Pit3") + obj64 = ns.Object("Pit4") + obj65 = ns.Object("Pit5") + obj66 = ns.Object("Pit6") + obj24 = ns.Object("Elevator1") + obj25 = ns.Object("Elevator2") + obj26 = ns.Object("Elevator3") + obj27 = ns.Object("Elevator4") + obj28 = ns.Object("Elevator5") + obj29 = ns.Object("Elevator6") + obj30 = ns.Object("Skeleton1") + obj31 = ns.Object("Skeleton2") + obj32 = ns.Object("Skeleton3") + obj33 = ns.Object("Skeleton4") + obj34 = ns.Object("Skeleton5") + obj35 = ns.Object("Skeleton6") + obj67 = ns.Object("Skeleton7") + obj36 = ns.Object("EndTrapTrigger") + obj59 = ns.Object("Gear1") + obj60 = ns.Object("Gear2") + obj13 = ns.Object("Plate1") + obj14 = ns.Object("Plate2") + obj15 = ns.Object("Plate3") + obj16 = ns.Object("Plate4") + obj17 = ns.Object("Plate5") + obj81 = ns.Object("Spike1") + obj82 = ns.Object("Spike2") + obj83 = ns.Object("Spike3") + obj84 = ns.Object("Spike4") + obj85 = ns.Object("Spike5") + obj86 = ns.Object("Spike6") + obj87 = ns.Object("Spike7") + obj88 = ns.Object("Spike8") + obj89 = ns.Object("Spike9") + obj90 = ns.Object("Spike10") + obj91 = ns.Object("Spike11") + obj92 = ns.Object("Spike12") + obj68 = ns.Object("CellDoor1") + obj69 = ns.Object("CellDoor2") + obj70 = ns.Object("CellDoor3") + obj71 = ns.Object("CellDoor4") + obj72 = ns.Object("CellDoor5") + obj73 = ns.Object("CellDoor6") + obj74 = ns.Object("CellDoor7") + obj75 = ns.Object("CellDoor8") + obj76 = ns.Object("CellDoor9") + obj77 = ns.Object("CellDoor10") + obj78 = ns.Object("CellDoor11") + obj79 = ns.Object("CellDoor12") + obj80 = ns.Object("CellLever") + wp39 = ns.Waypoint("BlockOpen1") + wp45 = ns.Waypoint("BlockClosed1") + wp40 = ns.Waypoint("BlockOpen2") + wp46 = ns.Waypoint("BlockClosed2") + wp41 = ns.Waypoint("BlockOpen3") + wp47 = ns.Waypoint("BlockClosed3") + wp42 = ns.Waypoint("BlockOpen4") + wp48 = ns.Waypoint("BlockClosed4") + wp43 = ns.Waypoint("BlockOpen5") + wp49 = ns.Waypoint("BlockClosed5") + wp44 = ns.Waypoint("BlockOpen6") + wp50 = ns.Waypoint("BlockClosed6") + wp127 = ns.Waypoint("Gates1WP") + wp128 = ns.Waypoint("Gates2WP") + gvar5 = ns.WallGroup("Gates1") + gvar6 = ns.WallGroup("Gates2") + wp38 = ns.Waypoint("BlockAudio1WP") + wp98 = ns.Waypoint("Spike1Open") + wp99 = ns.Waypoint("Spike2Open") + wp100 = ns.Waypoint("Spike3Open") + wp101 = ns.Waypoint("Spike4Open") + wp102 = ns.Waypoint("Spike5Open") + wp103 = ns.Waypoint("Spike6Open") + wp104 = ns.Waypoint("Spike7Open") + wp105 = ns.Waypoint("Spike8Open") + wp106 = ns.Waypoint("Spike9Open") + wp107 = ns.Waypoint("Spike10Open") + wp108 = ns.Waypoint("Spike11Open") + wp109 = ns.Waypoint("Spike12Open") + wp110 = ns.Waypoint("Spike1Closed") + wp111 = ns.Waypoint("Spike2Closed") + wp112 = ns.Waypoint("Spike3Closed") + wp113 = ns.Waypoint("Spike4Closed") + wp114 = ns.Waypoint("Spike5Closed") + wp115 = ns.Waypoint("Spike6Closed") + wp116 = ns.Waypoint("Spike7Closed") + wp117 = ns.Waypoint("Spike8Closed") + wp118 = ns.Waypoint("Spike9Closed") + wp119 = ns.Waypoint("Spike10Closed") + wp120 = ns.Waypoint("Spike11Closed") + wp121 = ns.Waypoint("Spike12Closed") + wp51 = ns.Waypoint("SkeletonGoal") + wp37 = ns.Waypoint("EndTrapAudioWP") + OpenGates() + CloseBlocks() + LockCellDoors() + KillSkeleton7() + ns.Move(obj11, wp49) + ns.Move(obj12, wp50) + EnableSpikes() +} +func BatsHostilize() { + ns.GroupAggressionLevel(gvar52, 0.83) +} +func BearHostilize() { + ns.AggressionLevel(obj53, 0.83) +} +func OgresHostilize() { + ns.AggressionLevel(obj93, 0.83) + ns.AggressionLevel(obj94, 0.83) +} +func DestroyWalls() { + ns.WallGroupBreak(gvar58) + ns.Attack(obj54, ns.GetHost()) + ns.Attack(obj55, ns.GetHost()) + ns.Attack(obj56, ns.GetHost()) +} +func OpenCellDoors() { + ns.UnlockDoor(obj68) + ns.UnlockDoor(obj69) + ns.UnlockDoor(obj70) + ns.UnlockDoor(obj71) + ns.UnlockDoor(obj72) + ns.UnlockDoor(obj73) + ns.UnlockDoor(obj74) + ns.UnlockDoor(obj75) + ns.UnlockDoor(obj76) + ns.UnlockDoor(obj77) + ns.UnlockDoor(obj78) + ns.UnlockDoor(obj79) + ns.ObjectOff(obj80) + EnableGears() +} +func ToggleGates1() { + ns.AudioEvent(ns.FireBallExplode, wp127) + ns.WallGroupOpen(gvar5) +} +func ToggleGates2() { + ns.AudioEvent(ns.FireBallExplode, wp128) + ns.WallGroupOpen(gvar6) +} +func ChapterFail2() { + ns.EnchantOff(ns.GetHost(), ns.ENCHANT_INVULNERABLE) + ns.DeathScreen(5) +} +func SilverKeyTrap() { + ns.ObjectOff(obj129) + ns.ObjectOff(obj130) + ns.ObjectOff(obj131) + ns.ObjectOff(obj132) + ns.WallGroupBreak(gvar96) + ns.AggressionLevel(obj123, 0.83) + ns.AggressionLevel(obj124, 0.83) + ns.AggressionLevel(obj125, 0.83) + ns.AggressionLevel(obj126, 0.83) +} +func MapEntry() { + ns.UnBlind() + LetterBoxOff() + ns.Frozen(ns.GetHost(), false) + if ns.GetQuestStatus("Wiz05B:GotHorvath") != 1 { + goto LABEL1 + } + obj95 = ns.Object("Wiz05B:Horvath") + ns.SetCallback(obj95, 5, HorvathDeath) +LABEL1: + return +} +func PlaySubMusic() { + ns.Music(20, 100) +} +func MonsterGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func Secret01() { + ns.AudioEvent(ns.SecretFound, wp133) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func Secret02() { + ns.AudioEvent(ns.SecretFound, wp134) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz06a/dummy_test.go b/examples/wiz06a/dummy_test.go new file mode 100644 index 0000000..eeae71c --- /dev/null +++ b/examples/wiz06a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz06a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz06a/wiz06a.go b/examples/wiz06a/wiz06a.go new file mode 100644 index 0000000..ca06739 --- /dev/null +++ b/examples/wiz06a/wiz06a.go @@ -0,0 +1,556 @@ +package wiz06a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + ivar4 int + ivar5 int + ivar6 int + flag7 bool + flag8 bool + flag9 bool + flag10 bool + flag11 bool + flag12 bool + flag13 bool + flag14 bool + gvar15 int + ivar16 int + gvar17 int + ivar18 int + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + gvar53 ns.ObjectGroupID + gvar54 ns.ObjectGroupID + gvar55 ns.ObjectGroupID + gvar56 ns.WallGroupID + wp57 ns.WaypointID + wp58 ns.WaypointID + wp59 ns.WaypointID + wp60 ns.WaypointID + wp61 ns.WaypointID + wp62 ns.WaypointID + wp63 ns.WaypointID + wp64 ns.WaypointID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID + wp69 ns.WaypointID + wp70 ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + wp73 ns.WaypointID + wp74 ns.WaypointID + wp75 ns.WaypointID + obj76 ns.ObjectID + gvar77 ns.ObjectGroupID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID +) + +func init() { + ivar4 = 60 + ivar5 = 0 + ivar6 = 90 + flag7 = true + flag8 = true + flag9 = true + flag10 = true + flag11 = true + flag12 = true + flag13 = true + flag14 = true + gvar15 = 0 + ivar16 = 0 + gvar17 = 0 + ivar18 = 60 +} +func SayCountdown() { + ivar5 -= 1 + if !(ivar5 <= 0) { + goto LABEL1 + } + ivar5 = 0 + goto LABEL2 +LABEL1: + ns.FrameTimer(30, SayCountdown) +LABEL2: + return +} +func WarriorRecognize() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ivar5 == 0) { + goto LABEL1 + } + v0 = ns.Random(0, 3) + ivar5 = ivar4 + SayCountdown() + if v0 != 0 { + goto LABEL2 + } + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard2Recognize", ivar6) + goto LABEL1 +LABEL2: + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard1Recognize", ivar6) +LABEL1: + return +} +func WarriorEngage() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ivar5 == 0) { + goto LABEL1 + } + v0 = ns.Random(0, 1) + ivar5 = ivar4 + SayCountdown() + if v0 != 0 { + goto LABEL2 + } + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard1Recognize", ivar6) + goto LABEL1 +LABEL2: + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard2Recognize", ivar6) +LABEL1: + return +} +func WarriorListen() { + if !(ns.IsCaller(ns.GetHost()) && ivar5 == 0) { + goto LABEL1 + } + if ns.IsVisibleTo(ns.GetTrigger(), ns.GetHost()) { + goto LABEL1 + } + ivar5 = ivar4 + SayCountdown() + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard2Listen", ivar6) +LABEL1: + return +} +func delwinTalkStart() { + ns.TellStory(ns.UrchinRecognize, "Wiz06b:Delwin1") + ns.Frozen(ns.GetHost(), true) + ns.ObjectGroupOff(gvar53) +} +func delwinTalkEnd() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar53) + ns.CancelDialog(obj37) +} +func delwinLeaves() { + if !flag13 { + goto LABEL1 + } + if !ns.IsVisibleTo(obj37, ns.GetHost()) { + goto LABEL1 + } + flag13 = false + ns.Walk(obj37, ns.GetObjectX(ns.GetHost())+50, ns.GetObjectY(ns.GetHost())) + ns.SetDialog(obj37, ns.NORMAL, delwin1TalkStart, delwin1TalkEnd) + ns.StartDialog(obj37, ns.GetHost()) +LABEL1: + return +} +func delwin1TalkStart() { + ns.TellStory(ns.UrchinRecognize, "Wiz06b:Delwin2") + ns.AggressionLevel(obj37, 0) + ns.ObjectGroupOff(gvar53) +} +func delwin1TalkEnd() { + ns.CancelDialog(obj37) + ns.JournalEdit(ns.GetHost(), "Wiz6SneakIn", 4) + ns.JournalEntry(ns.GetHost(), "Wiz6Bull", 2) + ns.JournalEntry(ns.GetHost(), "Wiz6Fortress", 2) + ns.CreateObject("BluePotion", wp75) + ns.Frozen(ns.GetHost(), false) + ns.CreatureIdle(obj37) + ns.AggressionLevel(obj37, 0.16) + ns.ObjectGroupOn(gvar53) + ns.GiveXp(ns.GetHost(), 2500) + delwinGoesHome() +} +func delwinGoesHome() { + if !flag14 { + goto LABEL1 + } + if ns.IsVisibleTo(ns.GetHost(), obj37) { + goto LABEL2 + } + flag14 = false + ns.BecomeEnemy(obj37) + ns.MoveObject(obj37, 3749, 3497) +LABEL2: + ns.FrameTimer(10, delwinGoesHome) +LABEL1: + return +} +func heardYou() { + if !flag12 { + goto LABEL1 + } + flag12 = false + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.Chat(ns.GetTrigger(), "Wiz06b:Guard1") + ns.FrameTimer(90, hearingRestored) +LABEL1: + return +} +func hearingRestored() { + flag12 = true +} +func sawYou() { + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetHost()) { + goto LABEL1 + } + if !flag11 { + goto LABEL1 + } + flag11 = false + ns.Chat(ns.GetTrigger(), "Wiz06b:Guard2") + ns.FrameTimer(360, sightRestored) +LABEL1: + return +} +func sightRestored() { + flag11 = true +} +func march() { + ns.Wander(ns.GetTrigger()) +} +func freezePlayer() { + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(15, captainTalks) +} +func captainTalks() { + ns.StartDialog(obj19, ns.GetHost()) +} +func helloCaptain() { + ns.TellStory(ns.ArcherRecognize, "Wiz06a:Captain1") +} +func goodbyeCaptain() { + ns.MoveObject(obj24, 3989, 4542) + ns.MoveObject(obj25, 4014, 4541) + ns.MoveObject(obj26, 3954, 4542) + ns.SetDialog(obj19, ns.NORMAL, helloCaptain2, goodbyeCaptain2) + ns.StartDialog(obj19, ns.GetHost()) +} +func helloCaptain2() { + ns.TellStory(ns.ArcherRecognize, "Wiz06a:Captain2") +} +func goodbyeCaptain2() { + ns.CancelDialog(obj19) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.JournalEntry(ns.GetHost(), "Wiz6SneakIn", 2) + ns.FrameTimer(3, captainVanishes) +} +func captainVanishes() { + if !flag10 { + goto LABEL1 + } + if ns.IsVisibleTo(ns.GetHost(), obj19) { + goto LABEL2 + } + flag10 = false + ns.Delete(obj19) + ns.Delete(obj20) + ns.Delete(obj21) +LABEL2: + ns.FrameTimer(10, captainVanishes) +LABEL1: + return +} +func guard1Listen() { + if !flag8 { + goto LABEL1 + } + flag8 = false + if !flag7 { + goto LABEL2 + } + ivar16 += 1 + flag7 = false + ns.StoryPic(obj22, "Warrior3Pic") + ns.SetDialog(obj22, ns.NORMAL, guard1TalkStart, guard1TalkEnd) + ns.StartDialog(obj22, ns.GetHost()) + goto LABEL3 +LABEL2: + ns.Chat(obj22, "Wiz06a:Guard1Listen") + ivar16 += 1 + if !(ivar16 > 2) { + goto LABEL3 + } + ivar16 = 3 + ns.Walk(obj22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL3: + ns.FrameTimer(180, unpaused1) +LABEL1: + return +} +func guard1Recognize() { + if !flag7 { + goto LABEL1 + } + flag7 = false +LABEL1: + if !flag8 { + goto LABEL2 + } + flag8 = false + if flag7 { + goto LABEL3 + } + ns.Chat(obj22, "Wiz06a:Guard1Recognize") +LABEL3: + ns.FrameTimer(180, unpaused1) +LABEL2: + return +} +func guard1TalkStart() { + ns.Frozen(obj22, true) + ns.Frozen(obj23, true) + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.SwordsmanRecognize, "Wiz06a:Guard1Listen") +} +func guard1TalkEnd() { + ns.Frozen(obj22, false) + ns.Frozen(obj23, false) + ns.Frozen(ns.GetHost(), false) + ns.CancelDialog(obj22) +} +func unpaused1() { + flag8 = true +} +func guard2Listen() { + if !flag9 { + goto LABEL1 + } + flag9 = false + ns.Chat(obj23, "Wiz06a:Guard2Listen") + if !(ivar16 > 2) { + goto LABEL2 + } + ivar16 = 3 + ns.Walk(obj23, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL2: + ns.FrameTimer(210, unpaused2) +LABEL1: + return +} +func guard2Recognize() { + if !flag7 { + goto LABEL1 + } + flag7 = false +LABEL1: + if !flag9 { + goto LABEL2 + } + flag9 = false + ns.Chat(obj23, "Wiz06a:Guard2Recognize") + ns.FrameTimer(210, unpaused2) +LABEL2: + return +} +func unpaused2() { + flag9 = true +} +func goHome1() { + ns.GoBackHome(obj22) +} +func goHome2() { + ns.GoBackHome(obj23) +} +func ResetSquishTrapSEG1() { + ns.Move(obj29, wp66) + ns.Move(obj30, wp67) + ns.Move(obj31, wp68) + ns.Move(obj32, wp69) + ns.Move(obj33, wp70) + ns.Move(obj34, wp71) + ns.Move(obj35, wp72) + ns.Move(obj36, wp73) + ns.AudioEvent(ns.BoulderMove, wp57) + ns.FrameTimer(20, ResetSquishTrapSEG2) +} +func ResetSquishTrapSEG2() { + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) +} +func InitializeSquishBlocks() { + obj27 = ns.Object("SquishTrigger") + obj28 = ns.Object("BoomTrigger") + obj29 = ns.Object("SquishBlock01") + obj30 = ns.Object("SquishBlock02") + obj31 = ns.Object("SquishBlock03") + obj32 = ns.Object("SquishBlock04") + obj33 = ns.Object("SquishBlock05") + obj34 = ns.Object("SquishBlock06") + obj35 = ns.Object("SquishBlock07") + obj36 = ns.Object("SquishBlock08") + wp57 = ns.Waypoint("SquishAudioOrigin") + wp58 = ns.Waypoint("SquishWP01") + wp59 = ns.Waypoint("SquishWP02") + wp60 = ns.Waypoint("SquishWP03") + wp61 = ns.Waypoint("SquishWP04") + wp62 = ns.Waypoint("SquishWP05") + wp63 = ns.Waypoint("SquishWP06") + wp64 = ns.Waypoint("SquishWP07") + wp65 = ns.Waypoint("SquishWP08") + wp66 = ns.Waypoint("SquishWPHome01") + wp67 = ns.Waypoint("SquishWPHome02") + wp68 = ns.Waypoint("SquishWPHome03") + wp69 = ns.Waypoint("SquishWPHome04") + wp70 = ns.Waypoint("SquishWPHome05") + wp71 = ns.Waypoint("SquishWPHome06") + wp72 = ns.Waypoint("SquishWPHome07") + wp73 = ns.Waypoint("SquishWPHome08") +} +func MapInitialize() { + ns.StartupScreen(6) + obj19 = ns.Object("Captain") + obj20 = ns.Object("Basket") + obj21 = ns.Object("BasketShadow") + obj22 = ns.Object("Guard1") + obj23 = ns.Object("Guard2") + obj24 = ns.Object("Invisibility") + obj25 = ns.Object("Lock") + obj26 = ns.Object("Trap") + obj37 = ns.Object("Delwin") + obj38 = ns.Object("SweeperMover1") + obj39 = ns.Object("SweeperMover2") + obj40 = ns.Object("SweeperMover3") + obj41 = ns.Object("SweeperMover4") + obj42 = ns.Object("SweeperMover5") + obj43 = ns.Object("SweeperMover6") + obj44 = ns.Object("SweeperMover7") + obj45 = ns.Object("SweeperMover8") + obj46 = ns.Object("SweeperMover9") + obj47 = ns.Object("SweeperMover10") + obj48 = ns.Object("SweeperMover11") + obj49 = ns.Object("SweeperMover12") + obj50 = ns.Object("SweeperMover13") + obj51 = ns.Object("SweeperMover14") + obj52 = ns.Object("SewerElevator") + gvar55 = ns.ObjectGroup("SewerMonsters") + gvar56 = ns.WallGroup("SewerMonsterWalls") + gvar53 = ns.ObjectGroup("EveryMonsterOnMap") + wp74 = ns.Waypoint("PlayerSounds") + wp75 = ns.Waypoint("PotionWay") + ns.StoryPic(obj37, "Townsman1Pic") + ns.ObjectOn(obj38) + ns.ObjectOn(obj39) + ns.ObjectOn(obj40) + ns.ObjectOn(obj41) + ns.ObjectOn(obj42) + ns.ObjectOn(obj43) + ns.ObjectOn(obj44) + ns.ObjectOn(obj45) + ns.ObjectOn(obj46) + ns.StoryPic(obj19, "AirshipCaptainPic") + ns.SetDialog(obj19, ns.NEXT, helloCaptain, goodbyeCaptain) + obj76 = ns.Object("TrapSpellBook") + gvar54 = ns.ObjectGroup("RoamingGuards") + gvar77 = ns.ObjectGroup("DelwinTriggers") + wp78 = ns.Waypoint("DelwinGreetWP") + wp81 = ns.Waypoint("DelwinGuardWP") + wp79 = ns.Waypoint("DelwinLookWP") + wp80 = ns.Waypoint("TrapSpellWP") + ns.FrameTimer(3, InitializeSquishBlocks) + ns.FrameTimer(5, freezePlayer) + ns.GroupWander(gvar54) + ns.SetOwner(ns.GetHost(), obj19) + ns.Music(18, 100) +} +func PlayerDeath() { + ns.DeathScreen(6) +} +func Squish() { + ns.ObjectOff(obj27) + ns.Move(obj29, wp58) + ns.Move(obj30, wp59) + ns.Move(obj31, wp60) + ns.Move(obj32, wp61) + ns.Move(obj33, wp62) + ns.Move(obj34, wp63) + ns.Move(obj35, wp64) + ns.Move(obj36, wp65) + ns.AudioEvent(ns.BoulderMove, wp57) + ns.FrameTimer(ivar18, ResetSquishTrapSEG1) +} +func SquishBoom() { + if ns.IsCaller(obj31) { + goto LABEL1 + } + return +LABEL1: + ns.ObjectOff(obj28) + ns.AudioEvent(ns.HammerMissing, wp57) + ns.Effect(ns.JIGGLE, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 10, 0) +} +func OpenBlockSecretExit() { + ns.WallOpen(ns.Wall(178, 46)) +} +func SewerSecretFound() { + ns.MoveWaypoint(wp74, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp74) + ns.ObjectGroupOff(ns.ObjectGroup("SewerSecretTriggers")) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func Secret01Found() { + ns.MoveWaypoint(wp74, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp74) + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func ActivateSewerElevator() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(obj52) + ns.ObjectGroupOn(gvar55) + ns.WallGroupOpen(gvar56) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz06b/dummy_test.go b/examples/wiz06b/dummy_test.go new file mode 100644 index 0000000..7d1f9af --- /dev/null +++ b/examples/wiz06b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz06b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz06b/wiz06b.go b/examples/wiz06b/wiz06b.go new file mode 100644 index 0000000..e94d65c --- /dev/null +++ b/examples/wiz06b/wiz06b.go @@ -0,0 +1,144 @@ +package wiz06b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + wp7 ns.WaypointID + wp8 ns.WaypointID + gvar9 ns.ObjectGroupID + gvar10 ns.ObjectGroupID + ivar11 int + ivar12 int + ivar13 int +) + +func init() { + ivar11 = 60 + ivar12 = 0 + ivar13 = 90 +} +func DisableElevators() { + ns.ObjectOff(obj6) +} +func MapInitialize() { + obj4 = ns.Object("GauntletDoorR") + obj5 = ns.Object("GauntletDoorL") + obj6 = ns.Object("HideoutElevator") + wp7 = ns.Waypoint("PlayerSounds") + wp8 = ns.Waypoint("WellWP") + gvar9 = ns.ObjectGroup("RoamingWarriors") + gvar10 = ns.ObjectGroup("LightGears") + ns.LockDoor(obj4) + ns.LockDoor(obj5) + ns.GroupWander(gvar9) + ns.FrameTimer(45, DisableElevators) +} +func NoEnemys() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(6) +} +func ToggleHideoutElevator() { + ns.ObjectToggle(obj6) + ns.ObjectGroupToggle(gvar10) +} +func Secret01Found() { + ns.MoveWaypoint(wp7, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp7) + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func Secret02Found() { + ns.MoveWaypoint(wp7, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp7) + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func SayCountdown() { + ivar12 -= 1 + if !(ivar12 <= 0) { + goto LABEL1 + } + ivar12 = 0 + goto LABEL2 +LABEL1: + ns.FrameTimer(30, SayCountdown) +LABEL2: + return +} +func WarriorRecognize() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ivar12 == 0) { + goto LABEL1 + } + v0 = ns.Random(0, 3) + ivar12 = ivar11 + SayCountdown() + if v0 != 0 { + goto LABEL2 + } + ns.ChatTimer(ns.GetTrigger(), "War01A.scr:SetpieceGuard1Talk01", ivar13) + goto LABEL1 +LABEL2: + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard1Recognize", ivar13) +LABEL1: + return +} +func WarriorEngage() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ivar12 == 0) { + goto LABEL1 + } + v0 = ns.Random(0, 3) + ivar12 = ivar11 + SayCountdown() + if v0 != 0 { + goto LABEL2 + } + ns.ChatTimer(ns.GetTrigger(), "War01A.scr:SetpieceGuard1Talk01", ivar13) + goto LABEL1 +LABEL2: + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard1Recognize", ivar13) +LABEL1: + return +} +func WarriorListen() { + if !(ns.IsCaller(ns.GetHost()) && ivar12 == 0) { + goto LABEL1 + } + if ns.IsVisibleTo(ns.GetTrigger(), ns.GetHost()) { + goto LABEL1 + } + ivar12 = ivar11 + SayCountdown() + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard2Listen", ivar13) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp8) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz06c/dummy_test.go b/examples/wiz06c/dummy_test.go new file mode 100644 index 0000000..b05a2f5 --- /dev/null +++ b/examples/wiz06c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz06c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz06c/wiz06c.go b/examples/wiz06c/wiz06c.go new file mode 100644 index 0000000..ee9df5d --- /dev/null +++ b/examples/wiz06c/wiz06c.go @@ -0,0 +1,462 @@ +package wiz06c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + gvar11 ns.ObjectGroupID + ivar12 int + ivar13 int + ivar14 int + wp15 ns.WaypointID + flag16 bool + flag17 bool + flag18 bool + flag19 bool + flag20 bool + gvar21 int + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + gvar49 ns.ObjectGroupID + gvar50 ns.ObjectGroupID + gvar51 ns.ObjectGroupID + gvar52 ns.WallGroupID + gvar53 ns.WallGroupID + gvar54 ns.WallGroupID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + wp59 ns.WaypointID + wp60 ns.WaypointID + wp61 ns.WaypointID + wp62 ns.WaypointID + wp63 ns.WaypointID + wp64 ns.WaypointID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID +) + +func init() { + ivar12 = 60 + ivar13 = 0 + ivar14 = 90 + flag16 = true + flag17 = true + flag18 = true + flag19 = true + flag20 = true + gvar21 = 0 +} +func ReleaseMonsters() { + ns.ObjectOff(ns.GetTrigger()) + ns.UnlockDoor(obj4) + ns.UnlockDoor(obj5) + ns.UnlockDoor(obj6) + ns.UnlockDoor(obj7) + ns.UnlockDoor(obj8) + ns.UnlockDoor(obj9) + ns.UnlockDoor(obj10) + ns.SetOwner(ns.Object("OgreOwner"), ns.Object("Ogre01")) + ns.SetOwner(ns.Object("OgreOwner"), ns.Object("Ogre02")) + ns.SetOwner(ns.Object("OgreOwner"), ns.Object("Ogre03")) + ns.SetOwner(ns.Object("TrollOwner"), ns.Object("Troll01")) + ns.SetOwner(ns.Object("TrollOwner"), ns.Object("Troll02")) + ns.GroupMove(gvar11, ns.Waypoint("CagedMonsterWP")) +} +func SayCountdown() { + ivar13 -= 1 + if !(ivar13 <= 0) { + goto LABEL1 + } + ivar13 = 0 + goto LABEL2 +LABEL1: + ns.FrameTimer(30, SayCountdown) +LABEL2: + return +} +func WarriorRecognize() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ivar13 == 0) { + goto LABEL1 + } + v0 = ns.Random(0, 3) + ivar13 = ivar12 + SayCountdown() + if v0 != 0 { + goto LABEL2 + } + ns.Chat(ns.GetTrigger(), "War01A.scr:SetpieceGuard1Talk01") + goto LABEL1 +LABEL2: + ns.Chat(ns.GetTrigger(), "Wiz06a:Guard1Recognize") +LABEL1: + return +} +func WarriorEngage() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ivar13 == 0) { + goto LABEL1 + } + v0 = ns.Random(0, 3) + ivar13 = ivar12 + SayCountdown() + if v0 != 0 { + goto LABEL2 + } + ns.Chat(ns.GetTrigger(), "War01A.scr:SetpieceGuard1Talk01") + goto LABEL1 +LABEL2: + ns.Chat(ns.GetTrigger(), "Wiz06a:Guard1Recognize") +LABEL1: + return +} +func WarriorListen() { + if !(ns.IsCaller(ns.GetHost()) && ivar13 == 0) { + goto LABEL1 + } + if ns.IsVisibleTo(ns.GetTrigger(), ns.GetHost()) { + goto LABEL1 + } + ivar13 = ivar12 + SayCountdown() + ns.ChatTimer(ns.GetTrigger(), "Wiz06a:Guard2Listen", ivar14) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp15) +} +func heardYou() { + if !flag19 { + goto LABEL1 + } + flag19 = false + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.Chat(ns.GetTrigger(), "Wiz06b:Guard1") + ns.FrameTimer(90, hearingRestored) +LABEL1: + return +} +func hearingRestored() { + flag19 = true +} +func sightRestored() { + flag18 = true +} +func flamesOn() { + ns.ObjectGroupOn(gvar49) +} +func flamesOff() { + ns.ObjectGroupOff(gvar49) + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) + ns.BecomePet(obj27) + ns.BecomePet(obj28) + ns.WallGroupOpen(gvar54) +} +func horrendousHurt() { + if !flag17 { + goto LABEL1 + } + if !(ns.CurrentHealth(obj22) < 50) { + goto LABEL1 + } + ns.SetDialog(obj22, ns.NORMAL, horrendousTalk2Start, horrendousTalk2End) + ns.StartDialog(obj22, ns.GetHost()) +LABEL1: + return +} +func horrendousDie() { + ns.SetDialog(obj22, ns.NORMAL, horrendousTalk3Start, horrendousTalk3End) + ns.StartDialog(obj22, ns.GetHost()) +} +func horrendousEngage() { + if !flag16 { + goto LABEL1 + } + lockDoors() + ns.Music(28, 100) + ns.WideScreen(true) + ns.SetDialog(obj22, ns.NORMAL, horrendousTalk1Start, horrendousTalk1End) + ns.StartDialog(obj22, ns.GetHost()) +LABEL1: + return +} +func horrendousTalk1Start() { + flag16 = false + ns.CreatureIdle(obj22) + ns.ObjectGroupOff(gvar51) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.DemonRecognize, "Wiz06c:Horrendous2") +} +func horrendousTalk1End() { + ns.ObjectGroupOn(gvar51) + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.CancelDialog(obj22) +} +func horrendousTalk2Start() { + flag17 = false + ns.ObjectGroupOff(gvar51) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + ns.Damage(ns.GetHost(), 0, 1, 0) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.DemonRecognize, "Wiz06c:Horrendous3") +} +func horrendousTalk2End() { + ns.ObjectGroupOn(gvar51) + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) +} +func horrendousTalk3Start() { + ns.ObjectGroupOff(gvar51) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.DemonRecognize, "Wiz06c:Horrendous5") +} +func horrendousTalk3End() { + ns.ObjectGroupOn(gvar51) + ns.ObjectOn(obj27) + ns.ObjectOn(obj28) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.FrameTimer(60, getHalberd) +} +func getHalberd() { + ns.Pickup(ns.GetHost(), obj23) + ns.AudioEvent(ns.StaffOblivionAchieve1, wp60) + ns.ObjectOn(obj48) + ns.UnlockDoor(obj33) + ns.UnlockDoor(obj34) +} +func lockDoors() { + if !flag20 { + goto LABEL1 + } + flag20 = false + ns.ObjectOff(obj41) + ns.ObjectOn(obj40) + ns.LockDoor(obj33) + ns.LockDoor(obj34) + ns.LockDoor(obj35) + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.LockDoor(obj38) + ns.LockDoor(obj39) +LABEL1: + return +} +func unlockCells() { + ns.UnlockDoor(obj4) + ns.UnlockDoor(obj5) + ns.UnlockDoor(obj6) + ns.UnlockDoor(obj7) + ns.UnlockDoor(obj8) + ns.UnlockDoor(obj9) + ns.UnlockDoor(obj10) +} +func lockCells() { + ns.LockDoor(obj4) + ns.LockDoor(obj5) + ns.LockDoor(obj6) + ns.LockDoor(obj7) + ns.LockDoor(obj8) + ns.LockDoor(obj9) + ns.LockDoor(obj10) +} +func openMainGates() { + ns.Move(obj44, wp65) + ns.Move(obj45, wp66) + ns.Move(obj46, wp67) + ns.Move(obj47, wp68) +} +func closeMainGates() { + ns.Move(obj44, wp61) + ns.Move(obj45, wp62) + ns.Move(obj46, wp63) + ns.Move(obj47, wp64) +} +func toggleMainGates() { + if gvar21 != 0 { + goto LABEL1 + } + gvar21 = 1 + openMainGates() + goto LABEL2 +LABEL1: + gvar21 = 0 + closeMainGates() +LABEL2: + ns.AudioEvent(ns.BoulderMove, wp64) + ns.AudioEvent(ns.SecretWallStoneClose, wp64) +} +func endLevel() { + ns.Blind() + ns.DestroyEveryChat() + ns.ObjectGroupOff(gvar51) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(60, exitLevel) +} +func exitLevel() { + ns.DestroyEveryChat() + ns.Frozen(ns.GetHost(), false) + ns.UnBlind() + ns.MoveObject(ns.GetHost(), 655, 2726) +} +func MapInitialize() { + obj22 = ns.Object("Horrendous") + obj23 = ns.Object("OblivionHalberd") + obj24 = ns.Object("ManaDrainFocus") + obj25 = ns.Object("EliteGuard1") + obj26 = ns.Object("EliteGuard2") + obj27 = ns.Object("Wizard1") + obj28 = ns.Object("Wizard2") + obj29 = ns.Object("Ogre1") + obj30 = ns.Object("Ogre2") + obj31 = ns.Object("Ogre3") + obj32 = ns.Object("Ogre4") + obj33 = ns.Object("ArenaDoor1") + obj34 = ns.Object("ArenaDoor2") + obj35 = ns.Object("ArenaDoor3") + obj36 = ns.Object("ArenaDoor4") + obj37 = ns.Object("ArenaDoor5") + obj38 = ns.Object("ArenaDoor6") + obj39 = ns.Object("ArenaDoor7") + obj40 = ns.Object("OpenArenaTrigger") + obj41 = ns.Object("CloseArenaTrigger") + ns.ObjectOff(obj40) + ns.ObjectOff(obj41) + obj42 = ns.Object("RSideLocked") + obj43 = ns.Object("LSideLocked") + obj4 = ns.Object("CellDoor1") + obj5 = ns.Object("CellDoor2") + obj6 = ns.Object("CellDoor3") + obj7 = ns.Object("CellDoor4") + obj8 = ns.Object("CellDoor5") + obj9 = ns.Object("CellDoor6") + obj10 = ns.Object("CellDoor7") + obj48 = ns.Object("ExitTrigger1") + ns.ObjectOff(obj48) + obj44 = ns.Object("FG1Mover") + obj45 = ns.Object("FG2Mover") + obj46 = ns.Object("FG3Mover") + obj47 = ns.Object("FG4Mover") + gvar49 = ns.ObjectGroup("BlueFlames") + ns.ObjectGroupOn(gvar49) + gvar11 = ns.ObjectGroup("CagedMonsters") + gvar50 = ns.ObjectGroup("RoamingWarriors") + gvar51 = ns.ObjectGroup("EveryMonsterOnMap") + gvar52 = ns.WallGroup("OgreCages") + gvar53 = ns.WallGroup("UndeadBreakIn") + gvar54 = ns.WallGroup("WizardCages") + wp55 = ns.Waypoint("PlayerSounds") + wp15 = ns.Waypoint("WellWP") + wp56 = ns.Waypoint("PlayerNorth") + wp57 = ns.Waypoint("PlayerSouth") + wp58 = ns.Waypoint("PlayerEast") + wp59 = ns.Waypoint("PlayerWest") + wp60 = ns.Waypoint("HorrendousNorth") + wp61 = ns.Waypoint("FG1Closed") + wp62 = ns.Waypoint("FG2Closed") + wp63 = ns.Waypoint("FG3Closed") + wp64 = ns.Waypoint("FG4Closed") + wp65 = ns.Waypoint("FG1Open") + wp66 = ns.Waypoint("FG2Open") + wp67 = ns.Waypoint("FG3Open") + wp68 = ns.Waypoint("FG4Open") + ns.LockDoor(obj42) + ns.LockDoor(obj43) + ns.LockDoor(obj4) + ns.LockDoor(obj5) + ns.LockDoor(obj6) + ns.LockDoor(obj7) + ns.LockDoor(obj8) + ns.LockDoor(obj9) + ns.LockDoor(obj10) + ns.ObjectOff(obj27) + ns.ObjectOff(obj28) + ns.StoryPic(obj22, "HorrendousPic") + ns.StoryPic(obj27, "WizardGuard1Pic") + ns.StoryPic(obj28, "WizardGuard2Pic") + ns.GroupWander(gvar50) + ns.Music(16, 100) +} +func PlayerDeath() { + ns.DeathScreen(6) +} +func unlockDoors() { + if flag20 { + goto LABEL1 + } + flag20 = true + ns.ObjectOff(obj40) + ns.ObjectOn(obj41) + ns.UnlockDoor(obj33) + ns.UnlockDoor(obj34) +LABEL1: + return +} +func Secret01Found() { + ns.MoveWaypoint(wp55, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp55) + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz07a/dummy_test.go b/examples/wiz07a/dummy_test.go new file mode 100644 index 0000000..c4ef83c --- /dev/null +++ b/examples/wiz07a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz07a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz07a/wiz07a.go b/examples/wiz07a/wiz07a.go new file mode 100644 index 0000000..f7a7e04 --- /dev/null +++ b/examples/wiz07a/wiz07a.go @@ -0,0 +1,55 @@ +package wiz07a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID +) + +func CreatureSetup() { + ns.SetOwner(ns.GetHost(), obj4) + ns.SetOwner(ns.GetHost(), obj5) + ns.LockDoor(obj6) + ns.SetDialog(obj4, ns.NORMAL, JandorStart, JandorEnd) + ns.SetDialog(obj5, ns.NORMAL, LanceDialogStart, LanceDialogEnd) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.JournalEntry(ns.GetHost(), "GetHON", 2) + ns.FrameTimer(1, StartJandorTalk) +} +func StartJandorTalk() { + ns.StartDialog(obj4, ns.GetHost()) +} +func JandorStart() { + ns.Music(21, 100) + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:JandorTalk01") +} +func JandorEnd() { + ns.CancelDialog(obj4) +} +func LanceDialogStart() { + ns.TellStory(ns.SwordsmanHurt, "War01A.scr:Guard1Talk01") +} +func LanceDialogEnd() { +} +func MapInitialize() { + obj4 = ns.Object("Jandor") + obj5 = ns.Object("Lance") + obj6 = ns.Object("FacadeGate") + ns.StoryPic(obj4, "AirshipCaptainPic") + ns.StoryPic(obj5, "WizardGuard2Pic") + ns.StartupScreen(7) + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz07b/dummy_test.go b/examples/wiz07b/dummy_test.go new file mode 100644 index 0000000..50a9e67 --- /dev/null +++ b/examples/wiz07b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz07b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz07b/wiz07b.go b/examples/wiz07b/wiz07b.go new file mode 100644 index 0000000..3345838 --- /dev/null +++ b/examples/wiz07b/wiz07b.go @@ -0,0 +1,275 @@ +package wiz07b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + wp7 ns.WaypointID + wp8 ns.WaypointID + wp9 ns.WaypointID + wp10 ns.WaypointID + wp11 ns.WaypointID + gvar12 ns.WallGroupID + gvar13 ns.ObjectGroupID + gvar14 ns.ObjectGroupID + gvar15 ns.ObjectGroupID + gvar16 ns.ObjectGroupID + wp17 ns.WaypointID + wp18 ns.WaypointID + wp19 ns.WaypointID + wp20 ns.WaypointID + wp21 ns.WaypointID + wp22 ns.WaypointID + wp23 [21]ns.WaypointID + wp24 [21]ns.WaypointID + wp25 [21]ns.WaypointID + gvar26 ns.WallGroupID + gvar27 ns.ObjectGroupID + fvar28 float32 + fvar29 float32 + fvar30 float32 + gvar31 int + ivar32 int + flag33 bool +) + +func init() { + fvar28 = 8 + fvar29 = 20 + gvar31 = 5 + ivar32 = 600 + flag33 = true +} +func BustEm2() { + ns.WallGroupBreak(gvar12) +} +func RegenA() { + if ns.Object("RegenD1") != 0 { + goto LABEL1 + } + obj4 = ns.CreateObject("EmberDemon", wp7) + ns.CreatureHunt(obj4) +LABEL1: + if ns.Object("RegenD2") != 0 { + goto LABEL2 + } + obj5 = ns.CreateObject("EmberDemon", wp8) + ns.CreatureHunt(obj5) +LABEL2: + return +} +func RegenB() { + if ns.Object("RegenD3") != 0 { + goto LABEL1 + } + obj6 = ns.CreateObject("EmberDemon", wp9) + ns.CreatureHunt(obj6) +LABEL1: + return +} +func AutoSave1() { + ns.AutoSave() +} +func BustEm() { + ns.AudioEvent(ns.MagicMissileDetonate, wp11) + ns.AudioEvent(ns.WallDestroyed, wp10) + ns.Effect(ns.JIGGLE, 835, 2650, 13, 0) + ns.ObjectGroupOff(gvar13) + ns.FrameTimer(7, BustEm2) +} +func Init2() { + ns.Frozen(ns.GetHost(), false) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp22), ns.GetWaypointY(wp22), 0, 0) + ns.AudioEvent(ns.TeleportIn, wp22) + if !ns.HasEnchant(ns.GetHost(), ns.ENCHANT_INVISIBLE) { + goto LABEL1 + } + ns.EnchantOff(ns.GetHost(), ns.ENCHANT_INVISIBLE) +LABEL1: + ns.PrintToAll("Con03C.scr:NewTask") + ns.JournalEntry(ns.GetHost(), "Wiz07EscapeUnderworld", 2) +} +func Quake() { + var ( + v0 float32 + v1 float32 + v6 int + ) + if flag33 { + goto LABEL1 + } + return +LABEL1: + v0 = ns.GetObjectX(ns.GetHost()) + v1 = ns.GetObjectY(ns.GetHost()) + fvar30 = ns.RandomFloat(fvar28, fvar29) + ns.MoveWaypoint(wp11, v0, v1) + ns.AudioEvent(ns.BoulderMove, wp11) + ns.AudioEvent(ns.EarthRumbleMinor, wp11) + ns.Effect(ns.JIGGLE, v0, v1, fvar30, 0) + v6 = ns.Random(5, ivar32) + ns.FrameTimer(v6, Quake) +} +func PlaySubMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(18, 100) +LABEL1: + return +} +func MapInitialize() { + gvar16 = ns.ObjectGroup("MDGroup1") + gvar14 = ns.ObjectGroup("BatGroup1") + gvar15 = ns.ObjectGroup("ImpGroup1") + wp17 = ns.Waypoint("Secret01WP") + wp18 = ns.Waypoint("Secret02WP") + wp19 = ns.Waypoint("Secret03WP") + wp20 = ns.Waypoint("Secret04WP") + wp11 = ns.Waypoint("QuakeAudioOrigin") + wp21 = ns.Waypoint("CreationWP") + wp22 = ns.Waypoint("StartOrigin") + gvar26 = ns.WallGroup("Walls1") + gvar12 = ns.WallGroup("BustEmWalls") + obj4 = ns.Object("RegenD1") + obj5 = ns.Object("RegenD2") + obj6 = ns.Object("RegenD3") + wp10 = ns.Waypoint("BustAudioOrigin") + wp7 = ns.Waypoint("RegenLoc1") + wp8 = ns.Waypoint("RegenLoc2") + wp9 = ns.Waypoint("RegenLoc3") + wp23[0] = ns.Waypoint("Flamer1") + wp23[1] = ns.Waypoint("Flamer2") + wp23[2] = ns.Waypoint("Flamer3") + wp23[3] = ns.Waypoint("Flamer4") + wp23[4] = ns.Waypoint("Flamer5") + wp23[5] = ns.Waypoint("Flamer6") + wp23[6] = ns.Waypoint("Flamer7") + wp23[7] = ns.Waypoint("Flamer8") + wp23[8] = ns.Waypoint("Flamer9") + wp23[9] = ns.Waypoint("Flamer10") + wp23[10] = ns.Waypoint("Flamer11") + wp23[11] = ns.Waypoint("Flamer12") + wp23[12] = ns.Waypoint("Flamer13") + wp23[13] = ns.Waypoint("Flamer14") + wp23[14] = ns.Waypoint("Flamer15") + wp23[15] = ns.Waypoint("Flamer16") + wp23[16] = ns.Waypoint("Flamer17") + wp23[17] = ns.Waypoint("Flamer18") + wp23[18] = ns.Waypoint("Flamer19") + wp23[19] = ns.Waypoint("Flamer20") + wp23[20] = ns.Waypoint("Flamer21") + wp24[0] = ns.Waypoint("FlamerB1") + wp24[1] = ns.Waypoint("FlamerB2") + wp24[2] = ns.Waypoint("FlamerB3") + wp24[3] = ns.Waypoint("FlamerB4") + wp24[4] = ns.Waypoint("FlamerB5") + wp24[5] = ns.Waypoint("FlamerB6") + wp24[6] = ns.Waypoint("FlamerB7") + wp24[7] = ns.Waypoint("FlamerB8") + wp24[8] = ns.Waypoint("FlamerB9") + wp24[9] = ns.Waypoint("FlamerB10") + wp24[10] = ns.Waypoint("FlamerB11") + wp24[11] = ns.Waypoint("FlamerB12") + wp24[12] = ns.Waypoint("FlamerB13") + wp24[13] = ns.Waypoint("FlamerB14") + wp24[14] = ns.Waypoint("FlamerB15") + wp24[15] = ns.Waypoint("FlamerB16") + wp24[16] = ns.Waypoint("FlamerB17") + wp24[17] = ns.Waypoint("FlamerB18") + wp24[18] = ns.Waypoint("FlamerB19") + wp24[19] = ns.Waypoint("FlamerB20") + wp24[20] = ns.Waypoint("FlamerB21") + wp25[0] = ns.Waypoint("FlamerC1") + wp25[1] = ns.Waypoint("FlamerC2") + wp25[2] = ns.Waypoint("FlamerC3") + wp25[3] = ns.Waypoint("FlamerC4") + wp25[4] = ns.Waypoint("FlamerC5") + wp25[5] = ns.Waypoint("FlamerC6") + wp25[6] = ns.Waypoint("FlamerC7") + wp25[7] = ns.Waypoint("FlamerC8") + wp25[8] = ns.Waypoint("FlamerC9") + wp25[9] = ns.Waypoint("FlamerC10") + wp25[10] = ns.Waypoint("FlamerC11") + wp25[11] = ns.Waypoint("FlamerC12") + wp25[12] = ns.Waypoint("FlamerC13") + wp25[13] = ns.Waypoint("FlamerC14") + wp25[14] = ns.Waypoint("FlamerC15") + wp25[15] = ns.Waypoint("FlamerC16") + wp25[16] = ns.Waypoint("FlamerC17") + wp25[17] = ns.Waypoint("FlamerC18") + wp25[18] = ns.Waypoint("FlamerC19") + wp25[19] = ns.Waypoint("FlamerC20") + wp25[20] = ns.Waypoint("FlamerC21") + gvar27 = ns.ObjectGroup("SecretT1") + gvar13 = ns.ObjectGroup("BustEmT") + ns.UnBlind() + Quake() + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(30, Init2) +} +func Bats1Hostilize() { + ns.GroupAggressionLevel(gvar14, 0.83) +} +func Imps1Hostilize() { + ns.GroupAggressionLevel(gvar15, 0.83) +} +func MD1Hostilize() { + ns.GroupAggressionLevel(gvar16, 0.83) +} +func HostilizeMe() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func MapEntry() { + PlaySubMusic() +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func PlayTownMusic() { + ns.Music(15, 100) +} +func WallOpen1() { + ns.WallGroupOpen(gvar26) +} +func Secret01() { + ns.AudioEvent(ns.SecretFound, wp17) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func Secret02() { + ns.ObjectGroupOff(gvar27) + ns.AudioEvent(ns.SecretFound, wp18) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func Secret03() { + ns.AudioEvent(ns.SecretFound, wp19) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func Secret04() { + ns.AudioEvent(ns.SecretFound, wp20) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz07c/dummy_test.go b/examples/wiz07c/dummy_test.go new file mode 100644 index 0000000..620c6fa --- /dev/null +++ b/examples/wiz07c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz07c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz07c/wiz07c.go b/examples/wiz07c/wiz07c.go new file mode 100644 index 0000000..090ceb6 --- /dev/null +++ b/examples/wiz07c/wiz07c.go @@ -0,0 +1,819 @@ +package wiz07c + +import ( + "strconv" + + "github.com/noxworld-dev/noxscript/ns/v3" +) + +var ( + flag4 bool + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + ivar13 int + ivar14 int + ivar15 int + obj16 [20]ns.ObjectID + wp17 [20]ns.WaypointID + wp18 ns.WaypointID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + gvar23 ns.WallGroupID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + obj33 ns.ObjectID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + gvar45 ns.ObjectGroupID + gvar46 ns.ObjectGroupID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + ivar51 int + obj52 [4]ns.ObjectID + ivar53 [4]int + obj54 [4]ns.ObjectID + ivar55 [4]int + gvar56 int + flag57 bool + gvar58 ns.ObjectGroupID + wp59 ns.WaypointID + obj60 ns.ObjectID + wp61 ns.WaypointID + wp62 ns.WaypointID + gvar63 ns.ObjectGroupID + obj64 ns.ObjectID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 [9]ns.WaypointID + wp68 [9]ns.WaypointID + wp69 [9]ns.WaypointID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + fvar74 float32 + fvar75 float32 + fvar76 float32 + gvar77 int + ivar78 int +) + +func init() { + gvar5 = 0 + gvar6 = 1 + gvar7 = 2 + gvar8 = 3 + gvar9 = 4 + gvar10 = 5 + gvar11 = gvar5 + gvar12 = 0 + ivar13 = 0 + gvar56 = 1 + flag57 = true + flag4 = true + fvar74 = 4 + fvar75 = 12 + gvar77 = 5 + ivar78 = 1000 +} +func MasterDialogStart() { + if gvar12 != 3 { + goto LABEL1 + } + ns.TellStory(ns.DemonRecognize, "Wiz07C.scr:DemonTalk01") +LABEL1: + if gvar12 != 4 { + goto LABEL2 + } + ns.TellStory(ns.DemonRecognize, "Wiz07C.scr:DemonTalk04") +LABEL2: + return +} +func MasterDialogEnd() { + if gvar12 != 3 { + goto LABEL1 + } + ns.CancelDialog(obj19) + ns.FrameTimer(100, StartDemonTalk) + MoveLine() +LABEL1: + if gvar12 != 4 { + goto LABEL2 + } + ns.CancelDialog(obj19) + ns.FrameTimer(10, StartDemonTalk) +LABEL2: + return +} +func MoveLineState(a1 ns.ObjectID, a2 int) { + var v0 int + v0 = a2 + if v0 == 1 { + goto LABEL1 + } + if v0 == 3 { + goto LABEL2 + } + if v0 == 5 { + goto LABEL3 + } + if v0 == 7 { + goto LABEL4 + } + if v0 == 2 { + goto LABEL5 + } + if v0 == 4 { + goto LABEL6 + } + if v0 == 6 { + goto LABEL7 + } + if v0 == 8 { + goto LABEL8 + } + goto LABEL9 +LABEL1: + ns.Move(a1, wp34) + goto LABEL10 +LABEL2: + ns.Move(a1, wp36) + goto LABEL10 +LABEL3: + ns.Move(a1, wp38) + goto LABEL10 +LABEL4: + ns.Move(a1, wp40) + goto LABEL10 +LABEL5: + ns.Move(a1, wp34) + goto LABEL10 +LABEL6: + ns.Move(a1, wp35) + goto LABEL10 +LABEL7: + ns.Move(a1, wp37) + goto LABEL10 +LABEL8: + ns.Move(a1, wp39) + goto LABEL10 +LABEL9: + goto LABEL10 +LABEL10: + return +} +func CreateFireWall() { + var v0 int + v0 = gvar11 + if v0 == gvar5 { + goto LABEL1 + } + if v0 == gvar6 { + goto LABEL2 + } + if v0 == gvar7 { + goto LABEL3 + } + if v0 == gvar8 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar51 = 0 + for { + if !(ivar51 < 20) { + goto LABEL6 + } + ns.Delete(obj16[ivar51]) + obj16[ivar51] = ns.CreateObject("SmallFlame", wp17[ivar51]) + ivar51 += 1 + } +LABEL6: + gvar11 = gvar6 + ivar14 = 2 + goto LABEL5 +LABEL2: + ivar51 = 0 + for { + if !(ivar51 < 18) { + goto LABEL8 + } + ns.Delete(obj16[ivar51]) + obj16[ivar51] = ns.CreateObject("MediumFlame", wp17[ivar51]) + ivar51 += 1 + } +LABEL8: + gvar11 = gvar7 + ivar14 = 2 + goto LABEL5 +LABEL3: + ivar51 = 0 + for { + if !(ivar51 < 13) { + goto LABEL10 + } + ns.Delete(obj16[ivar51]) + obj16[ivar51] = ns.CreateObject("Flame", wp17[ivar51]) + ivar51 += 1 + } +LABEL10: + gvar11 = gvar8 + ivar14 = 3 + goto LABEL5 +LABEL4: + ivar51 = 0 + for { + if !(ivar51 < 10) { + goto LABEL12 + } + ns.Delete(obj16[ivar51]) + obj16[ivar51] = ns.CreateObject("LargeFlame", wp17[ivar51]) + ivar51 += 1 + } +LABEL12: + gvar11 = gvar9 + goto LABEL5 +LABEL5: + if gvar11 == gvar9 { + goto LABEL14 + } + ns.FrameTimer(ivar14, CreateFireWall) +LABEL14: + return +} +func ChapterEndB() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp59), ns.GetWaypointY(wp59)) +} +func DestroyFireWall() { + var v0 int + v0 = gvar11 + if v0 == gvar5 { + goto LABEL1 + } + if v0 == gvar6 { + goto LABEL2 + } + if v0 == gvar7 { + goto LABEL3 + } + if v0 == gvar9 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ivar51 = 0 + for { + if !(ivar51 < 20) { + goto LABEL6 + } + if !(ivar51 != 2 && ivar51 != 7 && ivar51 != 17) { + goto LABEL7 + } + ns.Delete(obj16[ivar51]) + LABEL7: + ivar51 += 1 + } +LABEL6: + gvar11 = gvar10 + goto LABEL5 +LABEL2: + ivar51 = 0 + for { + if !(ivar51 < 18) { + goto LABEL9 + } + ns.Delete(obj16[ivar51]) + obj16[ivar51] = ns.CreateObject("SmallFlame", wp17[ivar51]) + ivar51 += 1 + } +LABEL9: + ns.MoveObject(obj24, 1265, 2229) + ns.MoveObject(obj25, 1204, 2245) + ns.MoveObject(obj26, 1248, 2290) + gvar11 = gvar5 + ivar14 = 300 + goto LABEL5 +LABEL3: + if !(ns.CurrentHealth(obj52[2]) > 0) { + goto LABEL11 + } + ns.Damage(obj52[2], 0, 1000, 0) +LABEL11: + if !(ns.CurrentHealth(obj52[3]) > 0) { + goto LABEL12 + } + ns.Damage(obj52[3], 0, 1000, 0) +LABEL12: + if !(ns.CurrentHealth(obj54[2]) > 0) { + goto LABEL13 + } + ns.Damage(obj54[2], 0, 1000, 0) +LABEL13: + if !(ns.CurrentHealth(obj54[3]) > 0) { + goto LABEL14 + } + ns.Damage(obj54[3], 0, 1000, 0) +LABEL14: + ns.WallGroupOpen(gvar23) + ns.ObjectOn(obj33) + ivar51 = 0 + for { + if !(ivar51 < 13) { + goto LABEL15 + } + ns.Delete(obj16[ivar51]) + obj16[ivar51] = ns.CreateObject("MediumFlame", wp17[ivar51]) + ivar51 += 1 + } +LABEL15: + gvar11 = gvar6 + ivar14 = 30 + goto LABEL5 +LABEL4: + ivar51 = 0 + for { + if !(ivar51 < 10) { + goto LABEL17 + } + ns.Delete(obj16[ivar51]) + obj16[ivar51] = ns.CreateObject("Flame", wp17[ivar51]) + ivar51 += 1 + } +LABEL17: + gvar11 = gvar7 + ivar14 = 10 + goto LABEL5 +LABEL5: + if gvar11 == gvar10 { + goto LABEL19 + } + ns.FrameTimer(ivar14, DestroyFireWall) +LABEL19: + return +} +func PlaySubMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(18, 100) +LABEL1: + return +} +func PlayActionMusic() { + ns.Music(27, 100) +} +func FollowPath() { + ns.Wander(ns.GetTrigger()) +} +func UnlockDoor1() { + ns.UnlockDoor(obj22) + ns.AutoSave() +} +func MoveLine() { + var v0 int + if !flag57 { + goto LABEL1 + } + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL2 + } + if gvar56 == 0 { + goto LABEL3 + } + MoveLineState(obj52[v0], ivar53[v0]) + ivar53[v0] -= 2 + goto LABEL4 + LABEL3: + MoveLineState(obj54[v0], ivar55[v0]) + ivar55[v0] -= 2 + LABEL4: + v0 += 1 + } +LABEL2: + gvar56 = 1 - gvar56 + ivar13 += 1 + if !(ivar13 == 1 || ivar13 == 3) { + goto LABEL1 + } + ns.FrameTimer(82, MoveLine) +LABEL1: + return +} +func EnableLineD() { + ns.Wander(ns.GetCaller()) +} +func StartDemonTalk() { + var v0 int + v0 = gvar12 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + if v0 == 4 { + goto LABEL5 + } + if v0 == 5 { + goto LABEL6 + } + if v0 == 6 { + goto LABEL7 + } + if v0 == 7 { + goto LABEL8 + } + goto LABEL9 +LABEL1: + flag4 = false + ns.WideScreen(true) + MoveLine() + ivar15 = 3 + gvar12 = 1 + ns.FrameTimer(ivar15, StartDemonTalk) + goto LABEL9 +LABEL2: + ns.LookAtObject(ns.GetHost(), obj19) + ns.Frozen(ns.GetHost(), true) + gvar12 = 2 + ivar15 = 100 + ns.FrameTimer(ivar15, StartDemonTalk) + goto LABEL9 +LABEL3: + gvar12 = 3 + ns.StoryPic(obj19, "DemonPic") + ns.SetDialog(obj19, ns.NEXT, MasterDialogStart, MasterDialogEnd) + ns.StartDialog(obj19, ns.GetHost()) + goto LABEL9 +LABEL4: + gvar12 = 4 + if !ns.HasEnchant(ns.GetHost(), ns.ENCHANT_INVISIBLE) { + goto LABEL10 + } + ns.EnchantOff(ns.GetHost(), ns.ENCHANT_INVISIBLE) +LABEL10: + flag57 = false + ns.SetDialog(obj19, ns.NORMAL, MasterDialogStart, MasterDialogEnd) + ns.StartDialog(obj19, ns.GetHost()) + ivar51 = 0 + for { + if !(ivar51 < 4) { + goto LABEL11 + } + ns.LookAtObject(obj52[ivar51], ns.GetHost()) + ivar51 += 1 + } +LABEL11: + ivar51 = 0 + for { + if !(ivar51 < 4) { + goto LABEL13 + } + ns.LookAtObject(obj54[ivar51], ns.GetHost()) + ivar51 += 1 + } +LABEL13: + ns.LookAtObject(obj19, ns.GetHost()) + goto LABEL9 +LABEL5: + ns.WideScreen(false) + gvar12 = 5 + ns.WallGroupClose(gvar23) + ivar15 = 30 + ns.FrameTimer(ivar15, StartDemonTalk) + goto LABEL9 +LABEL6: + ns.Frozen(ns.GetHost(), false) + ivar15 = 1 + ns.AudioEvent("FireBallCast", wp18) + ns.AudioEvent(ns.FireGrate, wp18) + CreateFireWall() + gvar12 = 6 + ns.FrameTimer(ivar15, StartDemonTalk) + goto LABEL9 +LABEL7: + ns.ClearOwner(obj19) + ivar51 = 0 + for { + if !(ivar51 < 4) { + goto LABEL15 + } + ns.ClearOwner(obj52[ivar51]) + ivar51 += 1 + } +LABEL15: + ivar51 = 0 + for { + if !(ivar51 < 4) { + goto LABEL17 + } + ns.ClearOwner(obj54[ivar51]) + ivar51 += 1 + } +LABEL17: + gvar12 = 7 + ivar15 = 1 + ns.FrameTimer(ivar15, StartDemonTalk) + goto LABEL9 +LABEL8: + PlayActionMusic() + ns.ObjectOff(obj33) + gvar12 = 8 + ns.AggressionLevel(obj19, 0.83) + ns.Move(obj41, wp47) + ns.Move(obj42, wp48) + ns.Move(obj43, wp49) + ns.Move(obj44, wp50) + ns.AggressionLevel(obj41, 0.83) + ns.AggressionLevel(obj42, 0.83) + ns.AggressionLevel(obj43, 0.83) + ns.AggressionLevel(obj44, 0.83) + goto LABEL9 +LABEL9: + return +} +func DemonDeath() { + ns.AudioEvent(ns.FlagDrop, wp18) + PlaySubMusic() + DestroyFireWall() +} +func ChapterEnd() { + ns.JournalEdit(ns.GetHost(), "Wiz07EscapeUnderworld", 4) + ns.Blind() + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(60, ChapterEndB) + ns.ObjectOff(obj60) +} +func RegenA() { + if ns.Object("RegenD1") != 0 { + goto LABEL1 + } + obj27 = ns.CreateObject("EmberDemon", wp30) + ns.CreatureHunt(obj27) +LABEL1: + if ns.Object("RegenD2") != 0 { + goto LABEL2 + } + obj28 = ns.CreateObject("EmberDemon", wp31) + ns.CreatureHunt(obj28) +LABEL2: + if ns.Object("RegenD3") != 0 { + goto LABEL3 + } + obj29 = ns.CreateObject("EmberDemon", wp32) + ns.CreatureHunt(obj29) +LABEL3: + return +} +func Quake() { + var ( + v0 float32 + v1 float32 + v6 int + ) + if flag4 { + goto LABEL1 + } + return +LABEL1: + v0 = ns.GetObjectX(ns.GetHost()) + v1 = ns.GetObjectY(ns.GetHost()) + fvar76 = ns.RandomFloat(fvar74, fvar75) + ns.MoveWaypoint(wp65, v0, v1) + ns.AudioEvent(ns.BoulderMove, wp65) + ns.AudioEvent(ns.EarthRumbleMinor, wp65) + ns.Effect(ns.JIGGLE, v0, v1, fvar76, 0) + v6 = ns.Random(200, ivar78) + ns.FrameTimer(v6, Quake) +} +func LockDoors() { + ns.LockDoor(obj70) + ns.LockDoor(obj22) + ns.LockDoor(obj71) + ns.LockDoor(obj72) +} +func MapInitialize() { + var v0 int + wp61 = ns.Waypoint("Secret01WP") + wp62 = ns.Waypoint("Secret02WP") + gvar63 = ns.ObjectGroup("ImpGroup") + obj60 = ns.Object("ChapterEndTrig") + obj64 = ns.Object("SpikeDoor1") + ns.LockDoor(obj64) + gvar45 = ns.ObjectGroup("DemonGroup1") + gvar46 = ns.ObjectGroup("DemonGroup2") + obj41 = ns.Object("LineDR1") + obj42 = ns.Object("LineDL2") + obj43 = ns.Object("LineDR3") + obj44 = ns.Object("LineDL4") + wp18 = ns.Waypoint("FireSoundWP") + wp47 = ns.Waypoint("Demon1WP") + wp48 = ns.Waypoint("Demon2WP") + wp49 = ns.Waypoint("Demon3WP") + wp50 = ns.Waypoint("Demon4WP") + wp59 = ns.Waypoint("ExitWP") + wp65 = ns.Waypoint("QuakeAudioOrigin") + wp66 = ns.Waypoint("CreationWP") + obj24 = ns.Object("Light1") + obj25 = ns.Object("Light2") + obj26 = ns.Object("Light3") + obj27 = ns.Object("RegenD1") + obj28 = ns.Object("RegenD2") + obj29 = ns.Object("RegenD3") + wp30 = ns.Waypoint("RegenLoc1") + wp31 = ns.Waypoint("RegenLoc2") + wp32 = ns.Waypoint("RegenLoc3") + obj20 = ns.Object("NastyPit1") + obj21 = ns.Object("NastyPit2") + obj33 = ns.Object("EndTeleport1") + wp17[0] = ns.Waypoint("FireWall1") + wp17[1] = ns.Waypoint("FireWall2") + wp17[2] = ns.Waypoint("FireWall3") + wp17[3] = ns.Waypoint("FireWall4") + wp17[4] = ns.Waypoint("FireWall5") + wp17[5] = ns.Waypoint("FireWall6") + wp17[6] = ns.Waypoint("FireWall7") + wp17[7] = ns.Waypoint("FireWall8") + wp17[8] = ns.Waypoint("FireWall9") + wp17[9] = ns.Waypoint("FireWall10") + wp17[10] = ns.Waypoint("FireWall11") + wp17[11] = ns.Waypoint("FireWall12") + wp17[12] = ns.Waypoint("FireWall13") + wp17[13] = ns.Waypoint("FireWall14") + wp17[14] = ns.Waypoint("FireWall15") + wp17[15] = ns.Waypoint("FireWall16") + wp17[16] = ns.Waypoint("FireWall17") + wp17[17] = ns.Waypoint("FireWall18") + wp17[18] = ns.Waypoint("FireWall19") + wp17[19] = ns.Waypoint("FireWall20") + gvar23 = ns.WallGroup("Walls20") + obj70 = ns.Object("BarredDoor1") + obj22 = ns.Object("BarredDoor2") + obj71 = ns.Object("BarredDoor3") + obj72 = ns.Object("BarredDoor4") + obj73 = ns.Object("UnlockDoor1") + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL1 + } + obj52[v0] = ns.Object("LineDR" + strconv.Itoa(2*v0+1)) + v0 += 1 + } +LABEL1: + ivar53[0] = 1 + ivar53[1] = 3 + ivar53[2] = 5 + ivar53[3] = 7 + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL3 + } + obj54[v0] = ns.Object("LineDL" + strconv.Itoa(2*(v0+1))) + v0 += 1 + } +LABEL3: + ivar55[0] = 2 + ivar55[1] = 4 + ivar55[2] = 6 + ivar55[3] = 8 + obj19 = ns.Object("C6Necromancer") + wp34 = ns.Waypoint("A") + wp35 = ns.Waypoint("BL") + wp36 = ns.Waypoint("BR") + wp37 = ns.Waypoint("CL") + wp38 = ns.Waypoint("CR") + wp39 = ns.Waypoint("DL") + wp40 = ns.Waypoint("DR") + wp67[0] = ns.Waypoint("Flamer1") + wp67[1] = ns.Waypoint("Flamer2") + wp67[2] = ns.Waypoint("Flamer3") + wp67[3] = ns.Waypoint("Flamer4") + wp67[4] = ns.Waypoint("Flamer5") + wp67[5] = ns.Waypoint("Flamer6") + wp67[6] = ns.Waypoint("Flamer7") + wp67[7] = ns.Waypoint("Flamer8") + wp67[8] = ns.Waypoint("Flamer9") + wp68[0] = ns.Waypoint("FlamerB1") + wp68[1] = ns.Waypoint("FlamerB2") + wp68[2] = ns.Waypoint("FlamerB3") + wp68[3] = ns.Waypoint("FlamerB4") + wp68[4] = ns.Waypoint("FlamerB5") + wp68[5] = ns.Waypoint("FlamerB6") + wp68[6] = ns.Waypoint("FlamerB7") + wp68[7] = ns.Waypoint("FlamerB8") + wp68[8] = ns.Waypoint("FlamerB9") + wp69[0] = ns.Waypoint("FlamerC1") + wp69[1] = ns.Waypoint("FlamerC2") + wp69[2] = ns.Waypoint("FlamerC3") + wp69[3] = ns.Waypoint("FlamerC4") + wp69[4] = ns.Waypoint("FlamerC5") + wp69[5] = ns.Waypoint("FlamerC6") + wp69[6] = ns.Waypoint("FlamerC7") + wp69[7] = ns.Waypoint("FlamerC8") + wp69[8] = ns.Waypoint("FlamerC9") + gvar58 = ns.ObjectGroup("SecretT1") + Quake() + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL5 + } + ns.SetOwner(ns.GetHost(), obj52[v0]) + v0 += 1 + } +LABEL5: + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL7 + } + ns.SetOwner(ns.GetHost(), obj54[v0]) + v0 += 1 + } +LABEL7: + ns.SetOwner(ns.GetHost(), obj19) + ns.FrameTimer(2, LockDoors) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func MapEntry() { + ns.ObjectOn(obj60) + PlaySubMusic() +} +func ImpGroupHostilize() { + ns.GroupAggressionLevel(gvar63, 0.83) +} +func MonsterGoHome() { + if !ns.HasClass(ns.GetCaller(), "ENEMY") { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func Secret01() { + ns.AudioEvent(ns.SecretFound, wp61) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 200) +} +func Secret02() { + ns.AudioEvent(ns.SecretFound, wp62) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 200) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz07d/dummy_test.go b/examples/wiz07d/dummy_test.go new file mode 100644 index 0000000..991be26 --- /dev/null +++ b/examples/wiz07d/dummy_test.go @@ -0,0 +1,6 @@ +package wiz07d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz07d/wiz07d.go b/examples/wiz07d/wiz07d.go new file mode 100644 index 0000000..e55c3fa --- /dev/null +++ b/examples/wiz07d/wiz07d.go @@ -0,0 +1,119 @@ +package wiz07d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + gvar16 int + gvar17 int + gvar18 int +) + +func init() { + gvar16 = 0 + gvar17 = 1 +} +func CreatureSetup() { + ns.SetOwner(ns.GetHost(), obj14) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj11) + ns.SetOwner(ns.GetHost(), obj12) + ns.Wander(obj15) + ns.Music(15, 100) +} +func ReceptionTalkStart() { + var ( + v0 int + v1 int + v2 int + ) + v2 = gvar18 + if v2 == gvar16 { + goto LABEL1 + } + if v2 == gvar17 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Wiz07:Reception01") + gvar18 = gvar17 + goto LABEL3 +LABEL2: + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL4 + } + if v1 == 2 { + goto LABEL5 + } + goto LABEL3 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "Wiz07:Reception02") + goto LABEL3 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "Wiz07:Reception03") + goto LABEL3 +LABEL3: + return +} +func ReceptionTalkEnd() { + ns.SetDialog(obj14, ns.NORMAL, ReceptionTalkStart, ReceptionTalkEnd) +} +func GanemStart() { + ns.LookAtObject(obj11, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz07:Ganem01") +} +func GanemEnd() { +} +func MapInitialize() { + obj14 = ns.Object("Main_Receptionist") + obj15 = ns.Object("Lewis") + obj11 = ns.Object("Ganem") + obj12 = ns.Object("Mystic") + obj4 = ns.Object("NorthDoor1") + obj5 = ns.Object("NorthDoor2") + obj6 = ns.Object("SouthDoorUp1") + obj7 = ns.Object("SouthDoorUp2") + obj8 = ns.Object("ClassDoor") + obj9 = ns.Object("ArchiveGate1") + obj10 = ns.Object("ArchiveGate2") + obj13 = ns.Object("LabEntrance") + ns.LockDoor(obj4) + ns.LockDoor(obj5) + ns.LockDoor(obj6) + ns.LockDoor(obj7) + ns.LockDoor(obj8) + ns.LockDoor(obj9) + ns.LockDoor(obj10) + ns.LockDoor(obj13) + gvar18 = gvar16 + ns.SetDialog(obj14, ns.NORMAL, ReceptionTalkStart, ReceptionTalkEnd) + ns.StoryPic(obj14, "WizardGuard2Pic") + ns.StoryPic(obj11, "WizardGuard1Pic") + ns.SetDialog(obj11, ns.NORMAL, GanemStart, GanemEnd) + ns.FrameTimer(1, CreatureSetup) +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz07e/dummy_test.go b/examples/wiz07e/dummy_test.go new file mode 100644 index 0000000..9862dc4 --- /dev/null +++ b/examples/wiz07e/dummy_test.go @@ -0,0 +1,6 @@ +package wiz07e + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz07e/wiz07e.go b/examples/wiz07e/wiz07e.go new file mode 100644 index 0000000..07d6916 --- /dev/null +++ b/examples/wiz07e/wiz07e.go @@ -0,0 +1,390 @@ +package wiz07e + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + fvar22 float32 + fvar23 float32 + fvar24 float32 + fvar25 float32 + fvar26 float32 + fvar27 float32 + fvar28 float32 + fvar29 float32 + fvar30 float32 + fvar31 float32 + fvar32 float32 + fvar33 float32 + fvar34 float32 + fvar35 float32 + fvar36 float32 + fvar37 float32 + fvar38 float32 + fvar39 float32 + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + flag47 bool + gvar48 ns.WallGroupID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + gvar54 int + gvar55 int + gvar56 int + gvar57 int + gvar58 int + gvar59 int + gvar60 int + gvar61 int + gvar62 int + gvar63 int + gvar64 int +) + +func init() { + flag47 = false + gvar54 = 0 + gvar55 = 1 + gvar56 = 2 + gvar57 = 3 + gvar58 = 0 + gvar59 = 1 + gvar60 = 2 + gvar61 = 3 + gvar62 = 4 +} +func NoxHeartInit() { + obj4 = ns.Object("HeartLight1") + obj5 = ns.Object("HeartLight2") + obj6 = ns.Object("HeartLight3") + obj7 = ns.Object("HeartLight4") + obj8 = ns.Object("HeartLight5") + obj9 = ns.Object("HeartLight6") + obj10 = ns.Object("HeartLight7") + obj11 = ns.Object("HeartLight8") + obj12 = ns.Object("HeartLight9") + obj13 = ns.Object("NewLight1") + obj14 = ns.Object("NewLight2") + obj15 = ns.Object("NewLight3") + obj16 = ns.Object("NewLight4") + obj17 = ns.Object("NewLight5") + obj18 = ns.Object("NewLight6") + obj19 = ns.Object("NewLight7") + obj20 = ns.Object("NewLight8") + obj21 = ns.Object("NewLight9") + fvar22 = ns.GetObjectX(obj4) + fvar23 = ns.GetObjectX(obj5) + fvar24 = ns.GetObjectX(obj6) + fvar25 = ns.GetObjectX(obj7) + fvar26 = ns.GetObjectX(obj8) + fvar27 = ns.GetObjectX(obj9) + fvar28 = ns.GetObjectX(obj10) + fvar29 = ns.GetObjectX(obj11) + fvar30 = ns.GetObjectX(obj12) + fvar31 = ns.GetObjectY(obj4) + fvar32 = ns.GetObjectY(obj5) + fvar33 = ns.GetObjectY(obj6) + fvar34 = ns.GetObjectY(obj7) + fvar35 = ns.GetObjectY(obj8) + fvar36 = ns.GetObjectY(obj9) + fvar37 = ns.GetObjectY(obj10) + fvar38 = ns.GetObjectY(obj11) + fvar39 = ns.GetObjectY(obj12) +} +func Sparklies() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.ObjectOff(obj4) + ns.ObjectOff(obj5) + ns.ObjectOff(obj6) + ns.ObjectOff(obj7) + ns.ObjectOff(obj8) + ns.ObjectOff(obj9) + ns.ObjectOff(obj10) + ns.ObjectOff(obj11) + ns.ObjectOff(obj12) + ns.MoveObject(obj13, fvar22, fvar31) + ns.MoveObject(obj14, fvar23, fvar32) + ns.MoveObject(obj15, fvar24, fvar33) + ns.MoveObject(obj16, fvar25, fvar34) + ns.MoveObject(obj17, fvar26, fvar35) + ns.MoveObject(obj18, fvar27, fvar36) + ns.MoveObject(obj19, fvar28, fvar37) + ns.MoveObject(obj20, fvar29, fvar38) + ns.MoveObject(obj21, fvar30, fvar39) +} +func CreatureSetup() { + ns.Music(1, 100) + ns.SetOwner(ns.GetHost(), obj42) + ns.LookAtObject(obj42, ns.GetHost()) + ns.FrameTimer(1, NoxHeartInit) + ns.StartDialog(obj42, ns.GetHost()) +} +func HONTrigger() { + ns.ObjectOff(obj44) + ns.ObjectOff(obj45) + Sparklies() + ns.SetHalberd(1) + ns.MoveWaypoint(wp53, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.StaffOblivionAchieve2, wp53) + ns.JournalEdit(ns.GetHost(), "GetHON", 4) + ns.PrintToAll("Con07H.scr:HONTada") + ns.WallGroupOpen(gvar48) + ns.FrameTimer(1, EndSparklies) +} +func HorvathStart() { + var v0 int + v0 = gvar63 + if v0 == gvar54 { + goto LABEL1 + } + if v0 == gvar55 { + goto LABEL2 + } + if v0 == gvar56 { + goto LABEL3 + } + if v0 == gvar59 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:HorvathTalk01") + goto LABEL5 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:HorvathTalk02") + goto LABEL5 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:HorvathTalk03") + goto LABEL5 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:HorvathTalk04") + goto LABEL5 +LABEL5: + return +} +func HorvathEnd() { + var v0 int + v0 = gvar63 + if v0 == gvar54 { + goto LABEL1 + } + if v0 == gvar55 { + goto LABEL2 + } + if v0 == gvar56 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.CreatureFollow(obj42, ns.GetHost()) + ns.CancelDialog(obj42) + gvar63 = gvar55 + goto LABEL4 +LABEL2: + ns.Move(obj42, wp49) + ns.CancelDialog(obj42) + gvar63 = gvar56 + goto LABEL4 +LABEL3: + ns.SetDialog(obj42, ns.NORMAL, HorvathStart, HorvathEnd) + goto LABEL4 +LABEL4: + return +} +func Horvath2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:HorvathTalk04") +} +func Horvath2End() { + ns.SetDialog(obj43, ns.NEXT, Hecubah2Start, Hecubah2End) + ns.StartDialog(obj43, ns.GetHost()) +} +func HorvathTrigger() { + if !ns.IsCaller(obj42) { + goto LABEL1 + } + flag47 = true + ns.CreatureGuard(obj42, ns.GetWaypointX(wp49), ns.GetWaypointY(wp49), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetDialog(obj42, ns.NORMAL, HorvathStart, HorvathEnd) +LABEL1: + return +} +func StartSetPiece() { + if !flag47 { + goto LABEL1 + } + ns.Music(7, 100) + ns.ObjectOff(obj46) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.Enchant(ns.GetHost(), ns.ENCHANT_INVISIBLE, 0) + ns.LookAtObject(ns.GetHost(), obj42) + ns.Effect(ns.LESSER_EXPLOSION, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp50), ns.GetWaypointY(wp50), 0, 0) + ns.Effect(ns.LESSER_EXPLOSION, ns.GetWaypointX(wp50), ns.GetWaypointY(wp50), 0, 0) + ns.AudioEvent(ns.TeleportIn, wp50) + ns.MoveObject(obj43, ns.GetWaypointX(wp50), ns.GetWaypointY(wp50)) + ns.CreatureGuard(obj43, ns.GetObjectX(obj43), ns.GetObjectY(obj43), ns.GetObjectX(obj42), ns.GetObjectY(obj42), 0) + ns.CreatureGuard(obj42, ns.GetObjectX(obj42), ns.GetObjectY(obj42), ns.GetObjectX(obj43), ns.GetObjectY(obj43), 0) + ns.StartDialog(obj43, ns.GetHost()) + goto LABEL2 +LABEL1: + ns.FrameTimer(2, StartSetPiece) +LABEL2: + return +} +func TeleportEffect() { +} +func Hecubah1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:HecubahTalk01") +} +func Hecubah1End() { + ns.SetDialog(obj42, ns.NEXT, Horvath2Start, Horvath2End) + ns.StartDialog(obj42, ns.GetHost()) +} +func Hecubah2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:HecubahTalk02") +} +func Hecubah2End() { + ns.CancelDialog(obj43) + ns.CancelDialog(obj42) + ns.CastSpellLocationLocation(ns.SPELL_DEATH_RAY, ns.GetObjectX(obj43), ns.GetObjectY(obj43), ns.GetObjectX(obj42), ns.GetObjectY(obj42)) + ns.AggressionLevel(obj42, 0.83) + ns.SecondTimer(2, SecondAttack) +} +func Hecubah3Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz07.scr:HecubahTalk03") +} +func Hecubah3End() { + ns.Frozen(obj43, false) + ns.CreatureGuard(obj43, ns.GetObjectX(obj43), ns.GetObjectY(obj43), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.CancelDialog(obj43) + ns.Blind() + ns.FrameTimer(60, SetPlayerPosition) +} +func HorvathDeath() { + ns.Chat(obj42, "Wiz07.scr:HorvathTalk05") + ns.CastSpellLocationLocation(ns.SPELL_TURN_UNDEAD, ns.GetObjectX(obj42), ns.GetObjectY(obj42), ns.GetObjectX(obj42), ns.GetObjectY(obj42)) + ns.AggressionLevel(obj43, 0.16) + ns.Move(obj43, wp51) + ns.SecondTimer(2, EraseHorvath) +} +func HecubahGloat() { + if !ns.IsCaller(obj43) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj43, true) + ns.CreatureIdle(obj43) + ns.LookAtObject(obj43, ns.GetHost()) + ns.SetDialog(obj43, ns.NORMAL, Hecubah3Start, Hecubah3End) + ns.StartDialog(obj43, ns.GetHost()) +LABEL1: + return +} +func SetPlayerPosition() { + ns.SetQuestStatus(1, "HorvathDied") + ns.Music(0, 100) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), 3160, 4613) +} +func EndSparklies() { + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj42, ns.NORMAL, HorvathStart, HorvathEnd) + ns.StartDialog(obj42, ns.GetHost()) +} +func SecondAttack() { + ns.CastSpellLocationLocation(ns.SPELL_DEATH_RAY, ns.GetObjectX(obj43), ns.GetObjectY(obj43), ns.GetObjectX(obj42), ns.GetObjectY(obj42)) + if !(ns.CurrentHealth(obj42) > 0) { + goto LABEL1 + } + ns.SecondTimer(1, SecondAttack) +LABEL1: + return +} +func SaveGameFix() { + ns.Music(0, 100) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), 3160, 4613) +} +func SaveGameFade() { + ns.Blind() + ns.FrameTimer(60, SaveGameFix) +} +func EraseHorvath() { + ns.Delete(obj42) +} +func MapInitialize() { + wp52 = ns.Waypoint("HONWP") + obj40 = ns.Object("HONDoor1") + obj41 = ns.Object("HONDoor2") + obj42 = ns.Object("Horvath") + obj43 = ns.Object("Hecubah") + obj44 = ns.Object("HON") + obj45 = ns.Object("HONBase") + obj46 = ns.Object("SetPieceTrigger") + gvar48 = ns.WallGroup("HONWalls") + wp49 = ns.Waypoint("HorvathWP") + wp50 = ns.Waypoint("HecubahWP") + wp51 = ns.Waypoint("HecubahGloatWP") + wp53 = ns.Waypoint("PlayerSounds") + gvar63 = gvar54 + gvar64 = gvar58 + ns.LockDoor(obj40) + ns.LockDoor(obj41) + ns.SetDialog(obj42, ns.NORMAL, HorvathStart, HorvathEnd) + ns.SetDialog(obj43, ns.NEXT, Hecubah1Start, Hecubah1End) + ns.StoryPic(obj42, "HorvathPic") + ns.StoryPic(obj43, "HecubahPic") + ns.FrameTimer(10, CreatureSetup) +} +func MapEntry() { + if ns.GetQuestStatus("HorvathDied") != 1 { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.CancelDialog(obj43) + ns.FrameTimer(30, SaveGameFade) +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz07f/dummy_test.go b/examples/wiz07f/dummy_test.go new file mode 100644 index 0000000..fd7ad92 --- /dev/null +++ b/examples/wiz07f/dummy_test.go @@ -0,0 +1,6 @@ +package wiz07f + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz07f/wiz07f.go b/examples/wiz07f/wiz07f.go new file mode 100644 index 0000000..266515c --- /dev/null +++ b/examples/wiz07f/wiz07f.go @@ -0,0 +1,474 @@ +package wiz07f + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + gvar38 ns.WallGroupID + gvar39 ns.WallGroupID + gvar40 ns.ObjectGroupID + gvar41 ns.ObjectGroupID + wp42 ns.WaypointID + gvar43 int + gvar44 int + gvar45 int + gvar46 int + gvar47 int + gvar48 int + gvar49 int + gvar50 int + flag51 bool +) + +func init() { + gvar43 = 100 + gvar44 = 0 + gvar45 = 1 + gvar46 = 2 + gvar47 = 3 + gvar48 = 4 + gvar49 = 5 + gvar50 = gvar44 + flag51 = false +} +func CreatureSetup() { + ns.SetOwner(ns.GetHost(), obj18) + ns.SetOwner(ns.GetHost(), obj16) + ns.SetOwner(ns.GetHost(), obj17) + ns.SetOwner(ns.GetHost(), obj19) + ns.SetOwner(ns.GetHost(), obj20) + ns.SetOwner(ns.GetHost(), obj21) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj15) + ns.SetOwner(ns.GetHost(), obj11) + ns.SetOwner(ns.GetHost(), obj7) + ns.SetOwner(ns.GetHost(), obj14) + ns.SetOwner(ns.GetHost(), obj13) + ns.SetOwner(ns.GetHost(), obj12) + ns.SetOwner(ns.GetHost(), obj23) + ns.SetOwner(ns.GetHost(), obj24) + ns.SetOwner(ns.GetHost(), obj25) + ns.SetOwner(ns.GetHost(), obj26) + ns.SetOwner(ns.GetHost(), obj27) + if ns.GetQuestStatus("OwnMax") != 1 { + goto LABEL1 + } + ns.UnlockDoor(obj28) + ns.UnlockDoor(obj29) +LABEL1: + return +} +func PriestStart() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj11) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:PriestTalk01") +} +func PriestEnd() { + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj11, ns.NORMAL, PriestStart, PriestEnd) +} +func GrillfStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:GrillfTalk01") +} +func GrillfEnd() { + ns.SetDialog(obj13, ns.NORMAL, GrillfStart, GrillfEnd) +} +func UndertakerStart() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj11) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:UndertakerTalk01") +} +func UndertakerEnd() { + ns.Frozen(ns.GetHost(), false) + ns.SetDialog(obj12, ns.NORMAL, UndertakerStart, UndertakerEnd) +} +func MaxDialogStart() { + var v0 int + v0 = gvar50 + if v0 == gvar44 { + goto LABEL1 + } + if v0 == gvar45 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War07a.scr:MaxOffer01") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MaxWaiting") + goto LABEL3 +LABEL3: + return +} +func MaxDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v0 = ns.GetAnswer(obj7) + v5 = v0 + if v5 == v4 { + goto LABEL1 + } + if v5 == v3 { + goto LABEL2 + } + if v5 == v2 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + gvar50 = gvar45 + ResetMaxDialog() + goto LABEL4 +LABEL2: + ns.SetDialog(obj7, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:TurnMaxDown") + gvar50 = gvar45 + goto LABEL4 +LABEL3: + v1 = ns.GetGold(ns.GetHost()) + if !(v1 >= 50000) { + goto LABEL5 + } + ns.ObjectGroupOff(gvar40) + ns.SetDialog(obj7, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:HaveGoldForMax") + ns.ChangeGold(ns.GetHost(), -50000) + gvar50 = gvar49 + ns.UnlockDoor(obj28) + ns.UnlockDoor(obj29) + ns.SetQuestStatus(1, "OwnMax") + goto LABEL4 + goto LABEL4 +LABEL5: + ns.SetDialog(obj7, ns.NORMAL, NullFunction, ResetMaxDialog) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:NoGoldForMax") + gvar50 = gvar45 + goto LABEL4 +LABEL4: + return +} +func AlbiStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj18, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj18) + ns.LookAtObject(obj18, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj18) + ns.TellStory(ns.HumanMaleEatFood, "Con07:HecRaisesDead") +} +func AlbiEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj18, false) + ns.Wander(obj18) +} +func DorianStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj19, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj19) + ns.LookAtObject(obj19, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj19) + ns.TellStory(ns.HumanMaleEatFood, "Con07:LeavingGalava2") +} +func DorianEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj19, false) + ns.Wander(obj19) +} +func GrunbarStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj17, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj17) + ns.LookAtObject(obj17, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj17) + ns.TellStory(ns.HumanMaleEatFood, "Con07:LeavingGalava1") +} +func GrunbarEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj17, false) + ns.Wander(obj17) +} +func EowynnStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj25, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj25) + ns.LookAtObject(obj25, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj17) + ns.TellStory(ns.HumanMaleEatFood, "Con07B.scr:MaidenTalk03") +} +func EowynnEnd() { + ns.Frozen(obj25, false) + ns.Frozen(ns.GetHost(), false) + ns.Wander(obj25) +} +func ExitTrigger() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.UnlockDoor(obj28) + ns.UnlockDoor(obj29) +LABEL1: + return +} +func BoothStart() { + ns.Frozen(obj26, true) + ns.Frozen(ns.GetHost(), true) + ns.LookAtObject(ns.GetHost(), obj26) + ns.LookAtObject(obj26, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War03b:T4Post") +} +func BoothEnd() { + ns.Frozen(obj26, false) + ns.Frozen(ns.GetHost(), false) +} +func Jump() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), obj36) { + goto LABEL1 + } + if !ns.HasItem(ns.GetHost(), obj37) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar38) + ns.Chat(obj34, "Con02a:BarMaiden2") + ns.SecondTimer(3, Upset) +LABEL1: + return +} +func Upset() { + ns.DestroyEveryChat() + ns.Chat(obj33, "Wiz02B.scr:LewisTalk06") + ns.SecondTimer(3, StartJump) +} +func StartJump() { + ns.WallGroupOpen(gvar39) + ns.Wander(obj33) +} +func MoveJumper() { + if !ns.IsCaller(obj33) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.CreatureIdle(obj33) + ns.ObjectOn(obj35) + ns.Chat(obj33, "Wiz02B.scr:LewisTalk03") +LABEL1: + return +} +func KillJumper() { + if !ns.IsCaller(obj33) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + ns.Damage(obj33, 0, 500, 0) + ns.WallGroupClose(gvar39) + ns.WallGroupClose(gvar38) + ns.NoWallSound(false) +LABEL1: + return +} +func NewMaxStart() { + ns.Frozen(obj7, true) + ns.Frozen(ns.GetHost(), true) + ns.LookAtObject(ns.GetHost(), obj7) + ns.LookAtObject(obj7, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War07A.scr:MaxOffer01") +} +func NewMaxEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj7, false) +} +func DemonAway() { + r1 := ns.IsAttackedBy(ns.GetHost(), ns.GetCaller()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func MapInitialize() { + obj33 = ns.Object("TowerNPC") + obj34 = ns.Object("TowerMaiden") + obj35 = ns.Object("NPCMover") + obj36 = ns.Object("SecretShirt") + obj37 = ns.Object("SecretApple") + gvar38 = ns.WallGroup("JumpWalls") + gvar39 = ns.WallGroup("FallWalls") + obj4 = ns.Object("BrightBlades") + obj5 = ns.Object("Loreman") + obj6 = ns.Object("MageVendor") + obj7 = ns.Object("Max") + obj8 = ns.Object("MiscGuy") + obj9 = ns.Object("BookVendor") + obj10 = ns.Object("AppleMan") + obj11 = ns.Object("Priest") + obj12 = ns.Object("Undertaker") + obj13 = ns.Object("Grillf") + obj14 = ns.Object("Mlurgh") + obj15 = ns.Object("Warden") + obj16 = ns.Object("Jorgan") + obj17 = ns.Object("Grunbar") + obj18 = ns.Object("Albi") + obj19 = ns.Object("Dorian") + obj20 = ns.Object("Civvy3") + obj21 = ns.Object("Civvy4") + obj22 = ns.Object("Morgan") + obj25 = ns.Object("Eowynn") + obj24 = ns.Object("Shari") + obj23 = ns.Object("Kayla") + obj26 = ns.Object("F6Elite4") + obj27 = ns.Object("Maiden3") + obj28 = ns.Object("MaxHomeDoor1") + obj29 = ns.Object("MaxHomeDoor2") + obj30 = ns.Object("MorganCellDoor") + obj31 = ns.Object("GuardDoor1") + obj32 = ns.Object("GearRoomDoor") + gvar40 = ns.ObjectGroup("MaxWelcomeTriggers") + gvar41 = ns.ObjectGroup("ResetMaxTriggers") + wp42 = ns.Waypoint("PlayerSounds") + ns.LockDoor(obj28) + ns.LockDoor(obj29) + ns.LockDoor(obj30) + ns.LockDoor(obj31) + ns.LockDoor(obj32) + ns.Wander(obj19) + ns.Wander(obj18) + ns.Wander(obj17) + ns.Wander(obj16) + ns.Wander(obj20) + ns.Wander(obj21) + ns.SetDialog(obj11, ns.NORMAL, PriestStart, PriestEnd) + ns.SetDialog(obj12, ns.NORMAL, UndertakerStart, UndertakerEnd) + ns.SetDialog(obj7, ns.NORMAL, NewMaxStart, NewMaxEnd) + ns.SetDialog(obj18, ns.NORMAL, AlbiStart, AlbiEnd) + ns.SetDialog(obj19, ns.NORMAL, DorianStart, DorianEnd) + ns.SetDialog(obj17, ns.NORMAL, GrunbarStart, GrunbarEnd) + ns.SetDialog(obj25, ns.NORMAL, EowynnStart, EowynnEnd) + ns.SetDialog(obj26, ns.NORMAL, BoothStart, BoothEnd) + ns.StoryPic(obj26, "MalePic4") + ns.StoryPic(obj15, "WardenPic") + ns.StoryPic(obj7, "MaxPic") + ns.StoryPic(obj14, "IxGuard2Pic") + ns.StoryPic(obj12, "UndertakerPic") + ns.StoryPic(obj19, "Townsman2Pic") + ns.StoryPic(obj17, "MalePic7") + ns.StoryPic(obj18, "MalePic1") + ns.StoryPic(obj16, "Townsman3Pic") + ns.StoryPic(obj11, "GalavaPriestPic") + ns.StoryPic(obj25, "MaidenPic") +} +func MapEntry() { + ns.FrameTimer(1, CreatureSetup) + ns.Music(17, 100) +} +func PlayerDeath() { + ns.DeathScreen(7) +} +func ResetMaxDialog() { + if gvar50 != gvar49 { + goto LABEL1 + } + ns.CancelDialog(obj7) + goto LABEL2 +LABEL1: + ns.SetDialog(obj7, ns.YESNO, MaxDialogStart, MaxDialogEnd) +LABEL2: + return +} +func NullFunction() { +} +func SetMaxWelcome() { + flag51 = false +} +func MaxSayWelcome() { + if flag51 { + goto LABEL1 + } + ns.Chat(obj7, "Wiz02A.scr:MaxTalk01") + flag51 = true + if ns.GetQuestStatus("OwnMax") != 1 { + goto LABEL1 + } + ns.ObjectGroupOff(gvar41) + ns.MoveObject(obj7, 1514, 4800) + ns.FrameTimer(1, DisableMax) +LABEL1: + return +} +func DisableMax() { + ns.ObjectOff(obj7) +} +func MakeAWish() { + var v0 int + ns.MoveWaypoint(wp42, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp42) +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + } +} diff --git a/examples/wiz08a/dummy_test.go b/examples/wiz08a/dummy_test.go new file mode 100644 index 0000000..099cfb9 --- /dev/null +++ b/examples/wiz08a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz08a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz08a/wiz08a.go b/examples/wiz08a/wiz08a.go new file mode 100644 index 0000000..3b84884 --- /dev/null +++ b/examples/wiz08a/wiz08a.go @@ -0,0 +1,1524 @@ +package wiz08a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 int + gvar5 int + gvar6 int + gvar7 int + gvar8 int + gvar9 int + gvar10 int + gvar11 int + gvar12 int + gvar13 int + gvar14 int + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + gvar20 int + gvar21 int + gvar22 int + gvar23 int + gvar24 int + gvar25 int + gvar26 int + gvar27 int + gvar28 int + gvar29 int + gvar30 int + gvar31 int + gvar32 int + gvar33 int + gvar34 int + gvar35 int + gvar36 int + gvar37 int + gvar38 int + gvar39 int + gvar40 int + ivar41 int + gvar42 int + ivar43 int + ivar44 int + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + obj68 ns.ObjectID + obj69 ns.ObjectID + obj70 ns.ObjectID + obj71 ns.ObjectID + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + wp76 ns.WaypointID + wp77 ns.WaypointID + wp78 ns.WaypointID + wp79 ns.WaypointID + obj80 ns.ObjectID + obj81 ns.ObjectID + obj82 ns.ObjectID + obj83 ns.ObjectID + obj84 ns.ObjectID + obj85 ns.ObjectID + wp86 ns.WaypointID + wp87 ns.WaypointID + gvar88 int + gvar89 int + gvar90 int + gvar91 int + gvar92 int + gvar93 int + gvar94 int + gvar95 int + ivar96 int + flag97 bool + flag98 bool + flag99 bool + flag100 bool + flag101 bool + flag102 bool + flag103 bool + flag104 bool + flag105 bool + obj106 ns.ObjectID + gvar107 int + obj108 ns.ObjectID + obj109 ns.ObjectID + obj110 ns.ObjectID + obj111 ns.ObjectID + obj112 ns.ObjectID + obj113 ns.ObjectID + obj114 ns.ObjectID + obj115 ns.ObjectID + obj116 ns.ObjectID + obj117 ns.ObjectID + obj118 [4]ns.ObjectID + gvar119 int + wp120 ns.WaypointID + wp121 ns.WaypointID + wp122 ns.WaypointID + wp123 ns.WaypointID + gvar124 ns.ObjectGroupID + gvar125 ns.ObjectGroupID + gvar126 ns.WallGroupID + flag127 bool + ivar128 int + flag129 bool +) + +func init() { + gvar4 = 0 + gvar5 = 1 + gvar6 = 2 + gvar7 = 3 + gvar8 = 4 + gvar9 = 5 + gvar10 = 6 + gvar11 = 7 + gvar12 = 8 + gvar13 = 9 + gvar14 = 10 + gvar15 = 11 + gvar16 = 12 + gvar17 = 13 + gvar18 = 14 + gvar19 = 15 + gvar20 = 16 + gvar21 = 17 + gvar22 = 18 + gvar23 = 19 + gvar24 = 20 + gvar25 = 21 + gvar26 = 22 + gvar27 = 23 + gvar28 = 24 + gvar29 = 25 + gvar30 = gvar13 + gvar31 = gvar10 + gvar32 = gvar7 + gvar33 = gvar14 + gvar34 = gvar18 + gvar35 = gvar22 + gvar36 = gvar23 + gvar37 = gvar24 + gvar38 = gvar25 + gvar39 = gvar26 + gvar40 = gvar4 + ivar41 = 200 + gvar42 = 2 + ivar43 = 0 + ivar44 = 0 + gvar88 = 0 + gvar89 = 1 + gvar90 = 2 + gvar91 = 3 + gvar92 = 4 + gvar93 = 5 + gvar94 = 6 + gvar95 = gvar88 + ivar96 = 0 + flag97 = false + flag98 = false + flag99 = false + flag100 = false + flag101 = false + flag102 = false + flag103 = true + flag104 = false + flag105 = false + flag127 = false + ivar128 = 60 + flag129 = true +} +func JandorStart() { + var v0 int + v0 = gvar40 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "Wiz08a:CaptainGreet") + goto LABEL4 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con03A.scr:JandorB") + goto LABEL4 +LABEL3: + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(45, ExitToSwamp) + goto LABEL4 +LABEL4: + return +} +func JandorEnd() { + var v0 int + v0 = gvar40 + if v0 == gvar4 { + goto LABEL1 + } + if v0 == gvar5 { + goto LABEL2 + } + if v0 == gvar6 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + goto LABEL4 +LABEL2: + gvar40 = gvar6 + goto LABEL4 +LABEL3: + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(45, ExitToSwamp) + goto LABEL4 +LABEL4: + return +} +func JacobDialogStart() { + var ( + v0 int + v1 int + v2 int + ) + v2 = gvar39 + if v2 == gvar26 { + goto LABEL1 + } + if v2 == gvar27 { + goto LABEL2 + } + if v2 == gvar28 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Random(1, 3) + v1 = v0 + if v1 == 1 { + goto LABEL5 + } + if v1 == 2 { + goto LABEL6 + } + if v1 == 3 { + goto LABEL7 + } + goto LABEL8 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk01") + goto LABEL8 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk02") + goto LABEL8 +LABEL7: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk03") + goto LABEL8 +LABEL8: + goto LABEL4 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk04") + goto LABEL4 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Con02A:JailerTalk05") + goto LABEL4 +LABEL4: + return +} +func JacobDialogEnd() { + var v0 int + v0 = gvar39 + if v0 == gvar27 { + goto LABEL1 + } + if v0 == gvar28 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.Frozen(ns.GetHost(), false) + goto LABEL3 +LABEL2: + ns.Frozen(ns.GetHost(), false) + goto LABEL3 +LABEL3: + return +} +func ResetJacobDialog() { + if !ns.IsCaller(obj73) { + goto LABEL1 + } + if gvar39 != gvar29 { + goto LABEL1 + } + gvar39 = gvar26 + ns.SetDialog(obj73, ns.NORMAL, JacobDialogStart, JacobDialogEnd) + ivar44 = 0 + ns.ObjectOff(obj75) +LABEL1: + return +} +func MorganInjured() { + var v0 int + ivar44 += 1 + v0 = ivar44 + if v0 == 1 { + goto LABEL1 + } + if v0 == 2 { + goto LABEL2 + } + if v0 == 3 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + gvar39 = gvar27 + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj73) + ns.LookAtObject(obj73, ns.GetHost()) + if !(ns.CurrentHealth(obj73) > 0) { + goto LABEL5 + } + ns.StartDialog(obj73, ns.GetHost()) +LABEL5: + goto LABEL4 +LABEL2: + gvar39 = gvar28 + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj73) + ns.LookAtObject(obj73, ns.GetHost()) + if !(ns.CurrentHealth(obj73) > 0) { + goto LABEL6 + } + ns.StartDialog(obj73, ns.GetHost()) +LABEL6: + goto LABEL4 +LABEL3: + gvar39 = gvar29 + ns.CancelDialog(obj73) + ns.ClearOwner(obj73) + ns.AggressionLevel(obj73, 0.83) + if !(ns.CurrentHealth(obj73) > 0) { + goto LABEL7 + } + ns.Attack(obj73, ns.GetHost()) +LABEL7: + goto LABEL4 +LABEL4: + return +} +func PlayerFlee() { + if gvar39 != gvar29 { + goto LABEL1 + } + ns.ObjectOn(obj75) + ns.SetOwner(ns.GetHost(), obj73) + ns.AggressionLevel(obj73, 0) + ns.CreatureGuard(obj73, ns.GetWaypointX(wp77), ns.GetWaypointY(wp77), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL1: + return +} +func HenrickDialogStart() { + var v0 int + v0 = gvar31 + if v0 == gvar10 { + goto LABEL1 + } + if v0 == gvar11 { + goto LABEL2 + } + if v0 == gvar12 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj46, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSalesPitchA") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj46, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSalesPitchB") + goto LABEL4 +LABEL3: + ns.LookAtObject(obj46, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNoMoreWolves") + goto LABEL4 +LABEL4: + return +} +func HenrickDialogEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + v6 int + v7 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v7 = gvar31 + if v7 == gvar10 { + goto LABEL1 + } + if v7 == gvar11 { + goto LABEL2 + } + if v7 == gvar12 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v1 = ns.GetAnswer(obj46) + v5 = v1 + if v5 == v2 { + goto LABEL5 + } + if v5 == v3 { + goto LABEL6 + } + if v5 == v4 { + goto LABEL7 + } + goto LABEL8 +LABEL5: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar41) { + goto LABEL9 + } + ns.SetDialog(obj46, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNotEnoughGold") + goto LABEL10 +LABEL9: + ns.ChangeGold(ns.GetHost(), -ivar41) + gvar31 = gvar11 + ReleaseCharmedWolf(ivar43) + ivar43 += 1 + ns.SetDialog(obj46, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSaleSuccessful") +LABEL10: + goto LABEL8 +LABEL6: + goto LABEL8 +LABEL7: + goto LABEL8 +LABEL8: + goto LABEL4 +LABEL2: + v1 = ns.GetAnswer(obj46) + v6 = v1 + if v6 == v2 { + goto LABEL11 + } + if v6 == v3 { + goto LABEL12 + } + if v6 == v4 { + goto LABEL13 + } + goto LABEL14 +LABEL11: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < ivar41) { + goto LABEL15 + } + ns.SetDialog(obj46, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickNotEnoughGold") + goto LABEL16 +LABEL15: + ns.ChangeGold(ns.GetHost(), -ivar41) + ReleaseCharmedWolf(ivar43) + ivar43 += 1 + ns.SetDialog(obj46, ns.NORMAL, NullDialogStart, ResetHenrickDialogChoice) + ns.TellStory(ns.SwordsmanHurt, "War08b:HenrickSaleSuccessful") + if !(ivar43 >= 2) { + goto LABEL16 + } + gvar31 = gvar12 + ns.SetDialog(obj46, ns.NORMAL, HenrickDialogStart, HenrickDialogEnd) +LABEL16: + goto LABEL14 +LABEL12: + goto LABEL14 +LABEL13: + goto LABEL14 +LABEL14: + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func ResetHenrickDialogChoice() { + ns.SetDialog(obj46, ns.YESNO, HenrickDialogStart, HenrickDialogEnd) +} +func DrunkDialogStart() { + ns.LookAtObject(obj47, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War05A.scr:DrunkGreeting") +} +func DrunkDialogEnd() { +} +func GatekeeperDialogStart() { + var v0 int + ns.LookAtObject(obj50, ns.GetHost()) + v0 = gvar35 + if v0 == gvar22 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con02a:GatekeeperWaiting") + goto LABEL2 +LABEL2: + return +} +func GatekeeperDialogEnd() { +} +func Gatekeeper2DialogStart() { + var v0 int + ns.LookAtObject(obj61, ns.GetHost()) + v0 = gvar36 + if v0 == gvar23 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Wiz08a:Guard01Greet") + goto LABEL2 +LABEL2: + return +} +func Gatekeeper2DialogEnd() { +} +func Gatekeeper3DialogStart() { + var v0 int + ns.LookAtObject(obj62, ns.GetHost()) + v0 = gvar37 + if v0 == gvar24 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War08a:Guard02Greet") + goto LABEL2 +LABEL2: + return +} +func Gatekeeper3DialogEnd() { +} +func MayorDialogStart() { + var ( + v0 int + v1 int + ) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj53) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorPre") + goto LABEL3 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorBye") + goto LABEL3 +LABEL3: + return +} +func MayorDialogEnd() { + ns.Frozen(ns.GetHost(), false) +} +func MayorsGuardDialogStart() { + var v0 int + v0 = gvar30 + if v0 == gvar13 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.LookAtObject(obj51, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War03b:MayorsGuardIntro") + goto LABEL2 +LABEL2: + return +} +func MayorsGuardDialogEnd() { +} +func AldwinDialogStart() { + var v0 int + v0 = gvar32 + if v0 == gvar7 { + goto LABEL1 + } + if v0 == gvar8 { + goto LABEL2 + } + if v0 == gvar9 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.LookAtObject(obj52, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Wiz08a:AldwynGreet") + goto LABEL4 +LABEL2: + ns.LookAtObject(obj52, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War08a:AldwynProd") + goto LABEL4 +LABEL3: + ns.LookAtObject(obj52, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con08:AldwynProd") + goto LABEL4 +LABEL4: + return +} +func AldwinDialogEnd() { + var v0 int + v0 = gvar32 + if v0 == gvar7 { + goto LABEL1 + } + if v0 == gvar8 { + goto LABEL2 + } + if v0 == gvar9 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.Pickup(ns.GetHost(), obj48) + ns.PrintToAll("GeneralPrint:GainedKey") + gvar32 = gvar8 + ns.JournalEdit(ns.GetHost(), "Chapter8LocateAldwyn", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8IxPriest", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + goto LABEL4 +LABEL2: + gvar32 = gvar9 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func BridgeGuardDialogStart() { + var v0 int + v0 = gvar38 + if v0 == gvar25 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + ns.LookAtObject(obj63, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:RandomSay") + goto LABEL2 +LABEL2: + return +} +func BridgeGuardDialogEnd() { + var v0 int + v0 = gvar38 + if v0 == gvar25 { + goto LABEL1 + } + goto LABEL2 +LABEL1: + goto LABEL2 +LABEL2: + return +} +func Maiden1DialogStart() { + ns.LookAtObject(obj65, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con02a:BarMaiden") +} +func Maiden1DialogEnd() { +} +func Maiden2DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj66, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj66) + ns.LookAtObject(ns.GetHost(), obj66) + ns.LookAtObject(obj66, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War06A:WomenSpeak2") +} +func Maiden2DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj66, false) + ns.Wander(obj66) +} +func Maiden3DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj67, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj67) + ns.LookAtObject(ns.GetHost(), obj67) + ns.LookAtObject(obj67, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaidenTalk05") +} +func Maiden3DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj67, false) + ns.Wander(obj67) +} +func Maiden4DialogStart() { + var ( + v0 int + v1 int + ) + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj68, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj68) + ns.LookAtObject(ns.GetHost(), obj68) + ns.LookAtObject(obj68, ns.GetHost()) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownswoman1") + goto LABEL3 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownswoman3") + goto LABEL3 +LABEL3: + return +} +func Maiden4DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj68, false) + ns.Wander(obj68) +} +func Townsman1DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj70, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj70) + ns.LookAtObject(ns.GetHost(), obj70) + ns.LookAtObject(obj70, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "War02a:NewTownsman3") +} +func Townsman1DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj70, false) + ns.Wander(obj70) +} +func Townsman2DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj71, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj71) + ns.LookAtObject(ns.GetHost(), obj71) + ns.LookAtObject(obj71, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:AlbiTalk01") +} +func Townsman2DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj71, false) + ns.Wander(obj71) +} +func Townsman3DialogStart() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj72, true) + ns.CreatureIdle(ns.GetHost()) + ns.CreatureIdle(obj72) + ns.LookAtObject(ns.GetHost(), obj72) + ns.LookAtObject(obj72, ns.GetHost()) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02A.scr:MaxRumor03") +} +func Townsman3DialogEnd() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj72, false) + ns.Wander(obj72) +} +func ReleaseCharmedWolf(a1 int) { + var v0 int + v0 = a1 + if v0 == 0 { + goto LABEL1 + } + if v0 == 1 { + goto LABEL2 + } + if v0 == 2 { + goto LABEL3 + } + if v0 == 3 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.WallOpen(ns.Wall(128, 106)) + ns.EnchantOff(obj118[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj118[a1], ns.GetHost()) + ns.PauseObject(obj118[a1], 30) + ns.AggressionLevel(obj118[a1], 0.83) + ns.MakeFriendly(obj118[a1]) + ns.BecomePet(obj118[a1]) + goto LABEL5 +LABEL2: + ns.WallOpen(ns.Wall(130, 104)) + ns.EnchantOff(obj118[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj118[a1], ns.GetHost()) + ns.PauseObject(obj118[a1], 30) + ns.AggressionLevel(obj118[a1], 0.83) + ns.MakeFriendly(obj118[a1]) + ns.BecomePet(obj118[a1]) + goto LABEL5 +LABEL3: + ns.WallOpen(ns.Wall(132, 102)) + ns.EnchantOff(obj118[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj118[a1], ns.GetHost()) + ns.PauseObject(obj118[a1], 30) + ns.AggressionLevel(obj118[a1], 0.83) + ns.MakeFriendly(obj118[a1]) + ns.BecomePet(obj118[a1]) + goto LABEL5 +LABEL4: + ns.WallOpen(ns.Wall(134, 100)) + ns.EnchantOff(obj118[a1], ns.ENCHANT_INVULNERABLE) + ns.CreatureFollow(obj118[a1], ns.GetHost()) + ns.PauseObject(obj118[a1], 30) + ns.AggressionLevel(obj118[a1], 0.83) + ns.MakeFriendly(obj118[a1]) + ns.BecomePet(obj118[a1]) + goto LABEL5 +LABEL5: + ns.PauseObject(obj118[a1], 30) +} +func InitializeDialogs() { + ns.StoryPic(obj46, "HenrickPic") + ns.StoryPic(obj47, "DrunkPic") + ns.StoryPic(obj49, "Townsman1Pic") + ns.StoryPic(obj50, "IxGuard2Pic") + ns.StoryPic(obj51, "Warrior3Pic") + ns.StoryPic(obj53, "TheogrinPic") + ns.StoryPic(obj52, "AldwynPic") + ns.StoryPic(obj61, "IxGuard2Pic") + ns.StoryPic(obj62, "IxGuard1Pic") + ns.StoryPic(obj63, "Townsman3Pic") + ns.StoryPic(obj65, "MaidenPic") + ns.StoryPic(obj66, "MaidenPic2") + ns.StoryPic(obj67, "MaidenPic3") + ns.StoryPic(obj68, "MaidenPic4") + ns.StoryPic(obj70, "MalePic4") + ns.StoryPic(obj71, "MalePic11") + ns.StoryPic(obj72, "MalePic12") + ns.StoryPic(obj45, "AirshipCaptainPic") + ns.StoryPic(obj73, "WardenPic") + ns.SetDialog(obj73, ns.NORMAL, JacobDialogStart, JacobDialogEnd) + ns.SetDialog(obj46, ns.YESNO, HenrickDialogStart, HenrickDialogEnd) + ns.SetDialog(obj45, ns.NORMAL, JandorStart, JandorEnd) + ns.SetDialog(obj47, ns.NORMAL, DrunkDialogStart, DrunkDialogEnd) + ns.SetDialog(obj61, ns.NORMAL, Gatekeeper2DialogStart, Gatekeeper2DialogEnd) + ns.SetDialog(obj62, ns.NORMAL, Gatekeeper3DialogStart, Gatekeeper3DialogEnd) + ns.SetDialog(obj51, ns.NORMAL, MayorsGuardDialogStart, MayorsGuardDialogEnd) + ns.SetDialog(obj52, ns.NORMAL, AldwinDialogStart, AldwinDialogEnd) + ns.SetDialog(obj63, ns.NORMAL, BridgeGuardDialogStart, BridgeGuardDialogEnd) + ns.SetDialog(obj65, ns.NORMAL, Maiden1DialogStart, Maiden1DialogEnd) + ns.SetDialog(obj66, ns.NORMAL, Maiden2DialogStart, Maiden2DialogEnd) + ns.SetDialog(obj67, ns.NORMAL, Maiden3DialogStart, Maiden3DialogEnd) + ns.SetDialog(obj68, ns.NORMAL, Maiden4DialogStart, Maiden4DialogEnd) + ns.SetDialog(obj70, ns.NORMAL, Townsman1DialogStart, Townsman1DialogEnd) + ns.SetDialog(obj71, ns.NORMAL, Townsman2DialogStart, Townsman2DialogEnd) + ns.SetDialog(obj72, ns.NORMAL, Townsman3DialogStart, Townsman3DialogEnd) +} +func InitializeSecondaryDialogs() { + gvar40 = gvar5 +} +func NullDialogStart() { +} +func ExitToSwamp() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(ns.Waypoint("SwampExitWP")), ns.GetWaypointY(ns.Waypoint("SwampExitWP"))) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func GoToMineSEG2() { + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp78), ns.GetWaypointY(wp78)) +} +func GoToMine() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Blind() + ns.FrameTimer(60, GoToMineSEG2) +LABEL1: + return +} +func GoToCaveSEG2() { + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp79), ns.GetWaypointY(wp79)) +} +func GoToCave() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Blind() + ns.FrameTimer(60, GoToCaveSEG2) +LABEL1: + return +} +func InversionInit() { + obj80 = ns.Object("Teacher") + obj81 = ns.Object("Apprentice") + obj82 = ns.Object("InvertSpell") + obj83 = ns.Object("LessonGate1") + obj84 = ns.Object("LessonGate2") + obj85 = ns.Object("ApprenticeTrigger") + wp86 = ns.Waypoint("PlayerSounds") + wp87 = ns.Waypoint("ApprenticeWP") + ns.StoryPic(obj80, "WizardGuard1Pic") + ns.SetDialog(obj80, ns.YESNO, TeacherStart, TeacherEnd) + ns.LockDoor(obj83) + ns.LockDoor(obj84) + ns.ObjectOff(obj85) + ns.FrameTimer(1, InversionOwnObject) +} +func InversionOwnObject() { + ns.SetOwner(ns.GetHost(), obj80) + ns.Enchant(obj80, ns.ENCHANT_ANCHORED, 0) + ns.Enchant(obj81, ns.ENCHANT_ANCHORED, 0) +} +func TeacherStart() { + var v0 int + v0 = gvar95 + if v0 == gvar88 { + goto LABEL1 + } + if v0 == gvar89 { + goto LABEL2 + } + if v0 == gvar90 { + goto LABEL3 + } + if v0 == gvar91 { + goto LABEL4 + } + if v0 == gvar92 { + goto LABEL5 + } + if v0 == gvar93 { + goto LABEL6 + } + if v0 == gvar94 { + goto LABEL7 + } + goto LABEL8 +LABEL1: + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj80) + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk01") + goto LABEL8 +LABEL2: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk04") + goto LABEL8 +LABEL3: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk02") + goto LABEL8 +LABEL4: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk03") + goto LABEL8 +LABEL5: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk05") + goto LABEL8 +LABEL6: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk04a") + goto LABEL8 +LABEL7: + ns.TellStory(ns.HumanMaleEatFood, "Wiz02B.scr:InversionBoyTalk06") + goto LABEL8 +LABEL8: + return +} +func TeacherEnd() { + var ( + v0 int + v1 int + v2 int + v3 int + v4 int + v5 int + v6 int + ) + v0 = 0 + v1 = 0 + v2 = 1 + v3 = 2 + v4 = 0 + v6 = gvar95 + if v6 == gvar88 { + goto LABEL1 + } + if v6 == gvar89 { + goto LABEL2 + } + if v6 == gvar90 { + goto LABEL3 + } + if v6 == gvar91 { + goto LABEL4 + } + if v6 == gvar92 { + goto LABEL5 + } + if v6 == gvar93 { + goto LABEL6 + } + if v6 == gvar94 { + goto LABEL7 + } + goto LABEL8 +LABEL1: + v1 = ns.GetAnswer(obj80) + v5 = v1 + if v5 == v2 { + goto LABEL9 + } + if v5 == v3 { + goto LABEL10 + } + if v5 == v4 { + goto LABEL11 + } + goto LABEL12 +LABEL9: + v0 = ns.GetGold(ns.GetHost()) + if !(v0 < 100) { + goto LABEL13 + } + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + gvar95 = gvar89 + ns.StartDialog(obj80, ns.GetHost()) + goto LABEL12 + goto LABEL10 +LABEL13: + ns.ChangeGold(ns.GetHost(), -100) + ns.UnlockDoor(obj83) + ns.UnlockDoor(obj84) + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + gvar95 = gvar90 + ns.StartDialog(obj80, ns.GetHost()) + goto LABEL12 +LABEL10: + ns.Frozen(ns.GetHost(), false) + gvar95 = gvar88 + ns.SetDialog(obj80, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL12 +LABEL11: + ns.Frozen(ns.GetHost(), false) + gvar95 = gvar88 + ns.SetDialog(obj80, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL12 +LABEL12: + goto LABEL8 +LABEL2: + ns.Frozen(ns.GetHost(), false) + gvar95 = gvar88 + ns.SetDialog(obj80, ns.YESNO, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL3: + ns.CancelDialog(obj80) + ns.Frozen(ns.GetHost(), false) + ns.Pickup(ns.GetHost(), obj82) + goto LABEL8 +LABEL4: + ns.CancelDialog(obj80) + ns.SecondTimer(1, Phoneme4) + goto LABEL8 +LABEL5: + ns.UnlockDoor(obj56) + ns.UnlockDoor(obj57) + ns.UnlockDoor(obj83) + ns.UnlockDoor(obj84) + gvar95 = gvar94 + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL6: + ns.UnlockDoor(obj56) + ns.UnlockDoor(obj57) + ns.UnlockDoor(obj83) + ns.UnlockDoor(obj84) + gvar95 = gvar94 + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL7: + gvar95 = gvar94 + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + goto LABEL8 +LABEL8: + return +} +func Phoneme1() { + if flag101 { + goto LABEL1 + } + ns.MoveWaypoint(wp86, 1326, 2493) + ns.AudioEvent(ns.SpellPhonemeDown, wp86) + ns.FrameTimer(10, Phoneme2) +LABEL1: + return +} +func Phoneme2() { + if flag101 { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeDown, wp86) + ns.FrameTimer(10, Phoneme3) +LABEL1: + return +} +func Phoneme3() { + if flag101 { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeDown, wp86) + ns.FrameTimer(10, CastSpells) +LABEL1: + return +} +func Phoneme4() { + if !flag101 { + goto LABEL1 + } + ns.MoveWaypoint(wp86, 1326, 2493) + ns.AudioEvent(ns.SpellPhonemeDown, wp86) + ns.FrameTimer(10, Phoneme5) +LABEL1: + return +} +func Phoneme5() { + if !flag101 { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeDown, wp86) + ns.FrameTimer(10, Phoneme6) +LABEL1: + return +} +func Phoneme6() { + if !flag101 { + goto LABEL1 + } + ns.AudioEvent(ns.SpellPhonemeDown, wp86) + ns.FrameTimer(10, CastSpells2) +LABEL1: + return +} +func LessonBegin() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if gvar95 != gvar90 { + goto LABEL1 + } + if !flag103 { + goto LABEL2 + } + ns.LockDoor(obj83) + ns.LockDoor(obj84) + ns.Move(obj81, wp87) + flag103 = false +LABEL2: + if !(flag97 == false && flag102 == true) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.LookAtObject(obj81, ns.GetHost()) + flag97 = true + ns.LockDoor(obj56) + ns.LockDoor(obj57) + ns.SecondTimer(1, Phoneme1) +LABEL1: + return +} +func CastSpells() { + if flag101 { + goto LABEL1 + } + if !(ivar96 < 4) { + goto LABEL2 + } + ns.CastSpellObjectLocation(ns.SPELL_SLOW, obj81, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL2: + if ivar96 != 4 { + goto LABEL3 + } + ns.CastSpellObjectLocation(ns.SPELL_SLOW, obj81, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL3: + ivar96 += 1 + if !(ivar96 < 5) { + goto LABEL4 + } + ns.SecondTimer(3, Phoneme1) + goto LABEL1 +LABEL4: + flag98 = true + if !flag100 { + goto LABEL5 + } + gvar95 = gvar92 + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj80, ns.GetHost()) + goto LABEL1 +LABEL5: + gvar95 = gvar93 + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj80, ns.GetHost()) +LABEL1: + return +} +func CastSpells2() { + if !flag101 { + goto LABEL1 + } + if !(ivar96 < 4) { + goto LABEL2 + } + ns.CastSpellObjectLocation(ns.SPELL_SLOW, obj81, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL2: + if ivar96 != 4 { + goto LABEL3 + } + ns.CastSpellObjectLocation(ns.SPELL_SLOW, obj81, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL3: + ivar96 += 1 + if !(ivar96 < 5) { + goto LABEL4 + } + ns.SecondTimer(3, Phoneme4) + goto LABEL1 +LABEL4: + flag98 = true + if !flag100 { + goto LABEL5 + } + gvar95 = gvar92 + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj80, ns.GetHost()) + goto LABEL1 +LABEL5: + gvar95 = gvar93 + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj80, ns.GetHost()) +LABEL1: + return +} +func CheckApprentice() { + if !ns.HasEnchant(obj81, ns.ENCHANT_SLOWED) { + goto LABEL1 + } + ns.ObjectOff(obj85) + flag101 = true + gvar95 = gvar91 + flag100 = true + if !(ivar96 > 2) { + goto LABEL2 + } + ivar96 = 2 +LABEL2: + ns.SetDialog(obj80, ns.NORMAL, TeacherStart, TeacherEnd) + ns.StartDialog(obj80, ns.GetHost()) +LABEL1: + if !(ns.CurrentHealth(obj81) <= 0) { + goto LABEL3 + } + ns.ObjectOff(ns.GetTrigger()) + flag100 = true +LABEL3: + return +} +func ApprenticeDie() { + ns.AudioEvent(ns.HumanMaleHurtHeavy, wp86) +} +func ApprenticeReport() { + ns.CreatureGuard(obj81, ns.GetWaypointX(wp87), ns.GetWaypointY(wp87), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.ObjectOn(obj85) + flag102 = true +} +func OwnObjects() { + ns.GroupSetOwner(ns.GetHost(), gvar124) + ns.SetOwner(ns.GetHost(), obj46) + ns.SetOwner(ns.GetHost(), obj106) + ns.GroupSetOwner(ns.GetHost(), gvar125) + ns.SetOwner(ns.GetHost(), obj47) + ns.SetOwner(ns.GetHost(), obj65) + ns.SetOwner(ns.GetHost(), obj66) + ns.SetOwner(ns.GetHost(), obj67) + ns.SetOwner(ns.GetHost(), obj68) + ns.SetOwner(ns.GetHost(), obj45) + ns.SetOwner(ns.GetHost(), obj73) + ns.StoryPic(obj49, "ShopKeeperBrownPic") +} +func FirstJournalEntry() { + if flag127 { + goto LABEL1 + } + flag127 = true + ns.JournalEntry(ns.GetHost(), "Chapter8LocateAldwyn", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL1: + return +} +func DisableElevators() { + ns.ObjectOff(obj58) + ns.ObjectOff(obj64) +} +func MapInitialize() { + var v0 int + obj46 = ns.Object("Henrick") + obj106 = ns.Object("HenricksWolf") + obj118[0] = ns.Object("CharmedWolf01") + obj118[1] = ns.Object("CharmedWolf02") + obj118[2] = ns.Object("CharmedWolf03") + obj118[3] = ns.Object("CharmedWolf04") + v0 = 0 + for { + if !(v0 < 4) { + goto LABEL1 + } + ns.Enchant(obj118[v0], ns.ENCHANT_INVULNERABLE, 0) + v0 += 1 + } +LABEL1: + obj47 = ns.Object("Drunk") + obj52 = ns.Object("Aldwyn") + obj50 = ns.Object("Geoff") + obj61 = ns.Object("Ryan") + obj62 = ns.Object("Ed") + obj53 = ns.Object("Mayor_Theogrin") + obj51 = ns.Object("Mayor's_Guard") + obj49 = ns.Object("Barkeeper") + obj63 = ns.Object("Bridge_Guard") + obj45 = ns.Object("Jandor") + obj73 = ns.Object("Jacob") + obj74 = ns.Object("Morgan") + obj117 = ns.Object("CaveDoor") + obj114 = ns.Object("MorganDoor") + obj54 = ns.Object("MayorGate1") + obj55 = ns.Object("MayorGate2") + obj56 = ns.Object("ContestGate1") + obj57 = ns.Object("ContestGate2") + obj110 = ns.Object("CemeteryGate01") + obj111 = ns.Object("CemeteryGate02") + obj108 = ns.Object("BasementDoor") + obj58 = ns.Object("AldwinElevator") + obj59 = ns.Object("RightTownGate") + obj60 = ns.Object("LeftTownGate") + obj70 = ns.Object("Bryan") + obj71 = ns.Object("Clyde") + obj72 = ns.Object("Tommy") + obj64 = ns.Object("MagicShopElevator") + obj65 = ns.Object("Joyce") + obj66 = ns.Object("Julie") + obj67 = ns.Object("Tanya") + obj68 = ns.Object("Gretchen") + obj48 = ns.Object("BlueKey") + obj69 = ns.Object("AldwynFireplace") + obj75 = ns.Object("JacobTrigger") + obj109 = ns.Object("AldwynsDoor") + obj112 = ns.Object("TempDoorR") + obj113 = ns.Object("TempDoorL") + obj115 = ns.Object("Mystic") + obj116 = ns.Object("Mystic2") + wp76 = ns.Waypoint("AldwynHome") + wp120 = ns.Waypoint("AldwynStorage") + wp77 = ns.Waypoint("JacobWP") + wp121 = ns.Waypoint("MysticWP") + wp122 = ns.Waypoint("MysticStorage") + wp123 = ns.Waypoint("FaceWP") + gvar124 = ns.ObjectGroup("NPC's") + gvar125 = ns.ObjectGroup("CharmedWolves") + gvar126 = ns.WallGroup("MagicShopElevatorWalls") + wp78 = ns.Waypoint("MineExitWP") + wp79 = ns.Waypoint("CaveExitWP") + ns.Wander(obj70) + ns.Wander(obj71) + ns.Wander(obj72) + ns.Wander(obj66) + ns.Wander(obj67) + ns.LockDoor(obj54) + ns.LockDoor(obj55) + ns.LockDoor(obj110) + ns.LockDoor(obj111) + ns.LockDoor(obj59) + ns.LockDoor(obj60) + ns.LockDoor(obj114) + ns.LockDoor(obj117) + InversionInit() + InitializeDialogs() + ns.StartupScreen(8) + ns.FrameTimer(1, OwnObjects) + ns.FrameTimer(1, FirstJournalEntry) + ns.FrameTimer(35, DisableElevators) +} +func MapEntry() { + var v0 int + v0 = ns.GetQuestStatus("Chapter8:HasWeirdling") + ns.Music(15, 100) + if v0 != 1 { + goto LABEL1 + } + flag105 = true + ns.MoveObject(obj52, ns.GetWaypointX(wp120), ns.GetWaypointY(wp120)) + ns.LockDoor(obj109) + ns.LockDoor(obj112) + ns.LockDoor(obj113) + InitializeSecondaryDialogs() + ns.SetShopkeeperText(obj115, "Con08a:Mystic2") + ns.CancelDialog(obj61) + ns.CancelDialog(obj62) +LABEL1: + ns.UnBlind() +} +func DebugOn() { + flag104 = true + ns.PrintToAll("Debug mode is enabled.") +} +func DebugOff() { + flag104 = false + ns.PrintToAll("Debug mode has been disabled.") +} +func OpenCaveDoor() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.UnlockDoor(obj117) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + return +} +func EnableRandomBump() { + flag129 = true +} +func RandomBump() { + if !(ns.IsCaller(ns.GetHost()) && flag129) { + goto LABEL1 + } + ns.Chat(ns.GetTrigger(), "Con02a:RandomBump") + flag129 = false + ns.FrameTimer(ivar128, EnableRandomBump) +LABEL1: + return +} +func RestAwhile() { + var v0 int + v0 = ns.Random(60, 120) + ns.PauseObject(ns.GetCaller(), v0) +} +func OpenMagicShopElevatorWalls() { + ns.WallGroupOpen(gvar126) +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, ns.Waypoint("WellWP")) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz08b/dummy_test.go b/examples/wiz08b/dummy_test.go new file mode 100644 index 0000000..6c9058b --- /dev/null +++ b/examples/wiz08b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz08b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz08b/wiz08b.go b/examples/wiz08b/wiz08b.go new file mode 100644 index 0000000..73cfac7 --- /dev/null +++ b/examples/wiz08b/wiz08b.go @@ -0,0 +1,263 @@ +package wiz08b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + wp8 ns.WaypointID + wp9 ns.WaypointID + gvar10 ns.ObjectGroupID + wp11 ns.WaypointID + wp12 ns.WaypointID + wp13 ns.WaypointID + wp14 ns.WaypointID + gvar15 int + gvar16 int + gvar17 int + gvar18 int + gvar19 int + flag20 bool + flag21 bool +) + +func init() { + gvar15 = 0 + gvar16 = 1 + gvar17 = 2 + gvar18 = 3 + gvar19 = gvar15 + flag20 = false + flag21 = false +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func GoToIxSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj4, false) + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp8), ns.GetWaypointY(wp8)) +} +func GoToIx() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Blind() + ns.FrameTimer(60, GoToIxSEG2) +LABEL1: + return +} +func GoToTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp9), ns.GetWaypointY(wp9)) +} +func GoToTemple() { + ns.Frozen(ns.GetHost(), true) + ns.CancelDialog(obj7) + ns.Blind() + ns.FrameTimer(60, GoToTempleSEG2) +} +func OwnObjects() { + ns.SetOwner(ns.GetHost(), obj7) +} +func MapInitialize() { + obj4 = ns.Object("Bear01") + obj5 = ns.Object("Bear02") + obj6 = ns.Object("Bear03") + obj7 = ns.Object("IxPriest") + gvar10 = ns.ObjectGroup("Fish") + wp8 = ns.Waypoint("IxExitWP") + wp11 = ns.Waypoint("TempleExtWP") + wp12 = ns.Waypoint("TempleIntWP") + wp9 = ns.Waypoint("TempleExitWP") + wp13 = ns.Waypoint("PriestWP") + wp14 = ns.Waypoint("PriestLookWP") + ns.GroupWander(gvar10) + ns.FrameTimer(1, OwnObjects) +} +func MapEntry() { + ns.Music(22, 100) + ns.UnBlind() +} +func EnterTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj4, false) + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp12), ns.GetWaypointY(wp12)) + ns.UnBlind() +} +func EnterTemple() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Blind() + ns.FrameTimer(60, EnterTempleSEG2) +} +func LeaveTempleSEG2() { + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.UnBlind() +} +func LeaveTemple() { + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(60, LeaveTempleSEG2) +} +func StayAway() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func NoMonsters() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func BearAttack() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.CreatureFollow(obj5, obj4) + ns.CreatureFollow(obj6, obj4) +LABEL1: + return +} +func BearIdle() { + ns.GoBackHome(ns.GetTrigger()) +} +func PriestSetPieceSEG2() { + ns.CreatureFollow(obj7, ns.GetHost()) + ns.FrameTimer(75, PriestSetPieceSEG3) +} +func PriestSetPieceSEG3() { + ns.StoryPic(obj7, "IxPriestPic") + ns.SetDialog(obj7, ns.NEXT, PriestDialogStart, PriestDialogEnd) + ns.StartDialog(obj7, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj7) +} +func PriestDialogStart() { + var v0 int + v0 = gvar19 + if v0 == gvar15 { + goto LABEL1 + } + if v0 == gvar16 { + goto LABEL2 + } + if v0 == gvar17 { + goto LABEL3 + } + if v0 == gvar18 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestGreet") + goto LABEL5 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd") + goto LABEL5 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd2") + goto LABEL5 +LABEL4: + ns.TellStory(ns.SwordsmanHurt, "Con08a:PriestProd3") + goto LABEL5 +LABEL5: + return +} +func PriestDialogEnd() { + var v0 int + v0 = gvar19 + if v0 == gvar15 { + goto LABEL1 + } + if v0 == gvar16 { + goto LABEL2 + } + if v0 == gvar17 { + goto LABEL3 + } + if v0 == gvar18 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar19 = gvar16 + PriestDialogStart() + goto LABEL5 +LABEL2: + gvar19 = gvar17 + PriestDialogStart() + goto LABEL5 +LABEL3: + gvar19 = gvar18 + ns.SetDialog(obj7, ns.NORMAL, PriestDialogStart, PriestDialogEnd) + PriestDialogStart() + goto LABEL5 +LABEL4: + if flag21 { + goto LABEL6 + } + flag21 = true + ns.JournalEdit(ns.GetHost(), "Chapter8IxPriest", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8Wierdling", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.WideScreen(false) + ns.CreatureGuard(obj7, ns.GetWaypointX(wp13), ns.GetWaypointY(wp13), ns.GetWaypointX(wp14), ns.GetWaypointY(wp14), 0) + ReleasePlayer() +LABEL6: + goto LABEL5 +LABEL5: + return +} +func ReleasePlayer() { + ns.MusicPopEvent() + ns.Frozen(ns.GetHost(), false) +} +func StartPriestSetPiece() { + if flag20 { + goto LABEL1 + } + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.MusicPushEvent() + ns.Music(10, 100) + flag20 = true + ns.AudioEvent(ns.BigGong, wp12) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, PriestSetPieceSEG2) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz08c/dummy_test.go b/examples/wiz08c/dummy_test.go new file mode 100644 index 0000000..1578c9b --- /dev/null +++ b/examples/wiz08c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz08c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz08c/wiz08c.go b/examples/wiz08c/wiz08c.go new file mode 100644 index 0000000..0804483 --- /dev/null +++ b/examples/wiz08c/wiz08c.go @@ -0,0 +1,842 @@ +package wiz08c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.ObjectGroupID + gvar5 ns.ObjectGroupID + gvar6 ns.ObjectGroupID + wp7 ns.WaypointID + obj8 ns.ObjectID + obj9 ns.ObjectID + wp10 ns.WaypointID + wp11 ns.WaypointID + gvar12 ns.WallGroupID + gvar13 ns.WallGroupID + wp14 ns.WaypointID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + wp23 ns.WaypointID + wp24 ns.WaypointID + wp25 ns.WaypointID + wp26 ns.WaypointID + wp27 ns.WaypointID + wp28 ns.WaypointID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + gvar32 int + gvar33 [10]ns.ObjectGroupID + gvar34 int + obj35 ns.ObjectID + obj36 [9]ns.ObjectID + gvar37 int + ivar38 int + ivar39 int + ivar40 int + ivar41 int + ivar42 int + ivar43 [10]int + flag44 [10]bool + wp45 [10]ns.WaypointID + str46 [6]string +) + +func init() { + gvar37 = 0 + ivar38 = 1 + ivar39 = 0 + ivar40 = 180 + ivar41 = 0 + ivar42 = 10 +} +func ArrowTrapAudio() { + ns.MoveWaypoint(wp7, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BowShoot, wp7) + ns.AudioEvent(ns.CrossBowShoot, wp7) +} +func DisableArrowTrapGroup01() { + ns.ObjectGroupOff(gvar4) +} +func EnableArrowTrapGroup01() { + ns.ObjectGroupOn(gvar4) + ns.FrameTimer(1, DisableArrowTrapGroup01) +} +func DisableArrowTrapGroup02() { + ns.ObjectGroupOff(gvar5) +} +func ActivateArrowTrap02() { + ns.ObjectGroupOn(gvar5) + ns.FrameTimer(1, DisableArrowTrapGroup02) +} +func DisableArrowTrapGroup03() { + ns.ObjectGroupOff(gvar6) +} +func ActivateArrowTrap03() { + ns.ObjectGroupOn(gvar6) + ns.FrameTimer(1, DisableArrowTrapGroup03) +} +func BeholderAttackExit() { + if !(ns.CurrentHealth(obj8) > 0) { + goto LABEL1 + } + if ns.IsVisibleTo(obj8, ns.GetHost()) { + goto LABEL1 + } + ns.Move(obj8, wp11) +LABEL1: + return +} +func BeholderStay() { + if !ns.IsCaller(obj8) { + goto LABEL1 + } + ns.Wander(obj8) +LABEL1: + if !ns.IsCaller(obj9) { + goto LABEL2 + } + ns.Wander(obj9) +LABEL2: + return +} +func OpenBoulderHallWall01() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(104, 162)) +} +func OpenBoulderHallWall02() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(213, 107)) +} +func GoldKeyRemoved() { + ns.WallGroupOpen(gvar12) + ns.WallGroupOpen(gvar13) +} +func ReleaseGoldKeyBombers() { + ns.WallGroupOpen(gvar13) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func InitializeSummoningCircles() { + var v0 int + v0 = 0 + for { + if !(v0 < 10) { + goto LABEL1 + } + flag44[v0] = true + ivar43[v0] = 0 + v0 += 1 + } +LABEL1: + str46[0] = "UrchinShaman" + str46[1] = "Mimic" + str46[2] = "Bear" + str46[3] = "Urchin" + str46[4] = "Imp" + str46[5] = "WhiteWolf" + obj35 = ns.Object("SummoningCircleTreasureLight") + obj36[0] = ns.Object("SummoningCircleTreasure01") + obj36[1] = ns.Object("SummoningCircleTreasure02") + obj36[2] = ns.Object("SummoningCircleTreasure03") + obj36[3] = ns.Object("SummoningCircleTreasure04") + obj36[4] = ns.Object("SummoningCircleTreasure05") + obj36[5] = ns.Object("SummoningCircleTreasure06") + obj36[6] = ns.Object("SummoningCircleTreasure07") + obj36[7] = ns.Object("SummoningCircleTreasure08") + obj36[8] = ns.Object("SummoningCircleTreasure09") + wp45[0] = ns.Waypoint("SummoningCircle01WP") + wp45[1] = ns.Waypoint("SummoningCircle02WP") + wp45[2] = ns.Waypoint("SummoningCircle03WP") + wp45[3] = ns.Waypoint("SummoningCircle04WP") + wp45[4] = ns.Waypoint("SummoningCircle05WP") + wp45[5] = ns.Waypoint("SummoningCircle06WP") + wp45[6] = ns.Waypoint("SummoningCircle07WP") + wp45[7] = ns.Waypoint("SummoningCircle08WP") + wp45[8] = ns.Waypoint("SummoningCircle09WP") + wp45[9] = ns.Waypoint("SummoningCircle10WP") + gvar33[0] = ns.ObjectGroup("SummonCircle01Lights") + gvar33[1] = ns.ObjectGroup("SummonCircle02Lights") + gvar33[2] = ns.ObjectGroup("SummonCircle03Lights") + gvar33[3] = ns.ObjectGroup("SummonCircle04Lights") + gvar33[4] = ns.ObjectGroup("SummonCircle05Lights") + gvar33[5] = ns.ObjectGroup("SummonCircle06Lights") + gvar33[6] = ns.ObjectGroup("SummonCircle07Lights") + gvar33[7] = ns.ObjectGroup("SummonCircle08Lights") + gvar33[8] = ns.ObjectGroup("SummonCircle09Lights") + gvar33[9] = ns.ObjectGroup("SummonCircle10Lights") +} +func MapInitialize() { + obj8 = ns.Object("Beholder01") + obj9 = ns.Object("Beholder02") + obj15 = ns.Object("Beholder03") + obj16 = ns.Object("Bat01") + obj17 = ns.Object("StoneBlock01") + obj18 = ns.Object("StoneBlock02") + obj19 = ns.Object("StoneBlock03") + obj20 = ns.Object("StoneBlock04") + obj21 = ns.Object("BomberPitElevator") + obj22 = ns.Object("SpiderPitElevator") + wp23 = ns.Waypoint("StoneBlock01WP") + wp26 = ns.Waypoint("StoneBlock02Home") + wp28 = ns.Waypoint("StoneBlock03Home") + wp25 = ns.Waypoint("StoneBlock02Dest") + wp27 = ns.Waypoint("StoneBlock03Dest") + wp24 = ns.Waypoint("StoneBlock04WP") + wp14 = ns.Waypoint("GoldKeyWP") + wp30 = ns.Waypoint("BomberCreationWP") + wp10 = ns.Waypoint("BomberAudioOrigin") + wp29 = ns.Waypoint("Beholder01SetPieceWP") + wp11 = ns.Waypoint("BeholderRoomExitWP") + wp7 = ns.Waypoint("ArrowTrapAudioOrigin") + wp31 = ns.Waypoint("SecretAudioOrigin") + gvar4 = ns.ObjectGroup("ArrowTrapGroup01") + gvar5 = ns.ObjectGroup("ArrowTrapGroup02") + gvar6 = ns.ObjectGroup("ArrowTrapGroup03") + gvar12 = ns.WallGroup("GoldKeyWalls") + gvar13 = ns.WallGroup("BomberCageWalls") + InitializeSummoningCircles() +} +func MapEntry() { + ns.Music(18, 100) + ns.UnBlind() +} +func EnableSpiderPitElevator() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOn(obj22) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp31, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp31) +} +func Secret01Found() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func SealTheTempleFX() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(ns.GetHost()) + v1 = ns.GetObjectY(ns.GetHost()) + ns.AudioEvent(ns.HugeFoot, wp23) + ns.Effect(ns.JIGGLE, v0, v1, 10, 0) +} +func SealTheTemple() { + ns.ObjectOff(ns.GetTrigger()) + ns.Move(obj17, wp23) + ns.Move(obj20, wp24) + ns.AudioEvent(ns.BigGong, wp23) + ns.AudioEvent(ns.SecretWallClose, wp23) + ns.FrameTimer(10, SealTheTempleFX) +} +func EnableElevator() { + ns.ObjectOn(obj21) +} +func ReleasePlayer() { + ns.WideScreen(false) + ns.ClearOwner(obj8) + ns.Frozen(ns.GetHost(), false) + if !(ns.CurrentHealth(obj16) > 0) { + goto LABEL1 + } + ns.ObjectOn(obj16) +LABEL1: + ns.Delete(ns.Object("Wiz08a:CharmedWolf01")) + ns.Delete(ns.Object("Wiz08a:CharmedWolf02")) + ns.Delete(ns.Object("Wiz08a:CharmedWolf03")) + ns.Delete(ns.Object("Wiz08a:CharmedWolf04")) + ns.NoWallSound(true) + ns.WallClose(ns.Wall(169, 87)) + ns.NoWallSound(false) + ns.FrameTimer(60, EnableElevator) +} +func BeholderSetpieceSEG3() { + ns.FrameTimer(60, ReleasePlayer) +} +func BeholderSetpieceSEG2() { + ns.Move(obj8, wp29) + ns.FrameTimer(180, ReleasePlayer) +} +func BeholderSetpiece() { + ns.SetOwner(ns.GetHost(), obj8) + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.WideScreen(true) + if !(ns.CurrentHealth(obj16) > 0) { + goto LABEL1 + } + ns.ObjectOff(obj16) +LABEL1: + ns.FrameTimer(60, BeholderSetpieceSEG2) +} +func DisableBomberPitElevator() { + ns.ObjectOff(obj21) +} +func BlockGatesFX() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetObjectX(ns.GetHost()) + v1 = ns.GetObjectY(ns.GetHost()) + ns.AudioEvent(ns.HugeFoot, wp25) + ns.Effect(ns.JIGGLE, v0, v1, 10, 0) +} +func CloseBlockGates() { + ns.Move(obj18, wp25) + ns.Move(obj19, wp27) + ns.AudioEvent(ns.SecretWallClose, wp25) + ns.AudioEvent(ns.SecretWallClose, wp27) + ns.FrameTimer(10, BlockGatesFX) +} +func SealBeholderRoom() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallClose(ns.Wall(209, 109)) + ns.MoveObject(obj8, ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.AggressionLevel(obj8, 0.83) + ns.AggressionLevel(obj9, 0.83) + ns.Wander(obj8) + ns.Wander(obj9) +} +func ResetSummonCircle(a1 int) { + flag44[a1] = true + ns.ObjectGroupOn(gvar33[a1]) +} +func SummoningCircleCleared(a1 int) { + ivar39 += 1 + if ivar39 != 9 { + goto LABEL1 + } + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 500) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1]), 0, 0) + ns.MoveObject(obj35, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.MoveObject(obj36[ivar39-1], ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.AudioEvent(ns.SmallGong, wp45[a1]) + goto LABEL2 +LABEL1: + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1]), 0, 0) + ns.MoveObject(obj35, ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.MoveObject(obj36[ivar39-1], ns.GetWaypointX(wp45[a1]), ns.GetWaypointY(wp45[a1])) + ns.AudioEvent(ns.BigGong, wp45[a1]) +LABEL2: + return +} +func SummonCircle01Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 0 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle02Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 1 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle03Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 2 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle04Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 3 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle05Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 4 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle06Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 5 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle07Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 6 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle08Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 7 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle09Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 8 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle10Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar37 = 9 + if !(ns.IsCaller(ns.GetHost()) && flag44[gvar37] == true) { + goto LABEL1 + } + flag44[gvar37] = false + ns.ObjectGroupOff(gvar33[gvar37]) + ns.AudioEvent(ns.SummonCast, wp45[gvar37]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp45[gvar37]), ns.GetWaypointY(wp45[gvar37]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar42) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp45[gvar37]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp45[gvar37]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar41 = ns.Random(0, 5) + ns.CreateObject(str46[ivar41], wp45[gvar37]) +LABEL6: + ivar43[gvar37] += 1 + if !(ivar43[gvar37] > ivar38) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar37, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar40, gvar37, ResetSummonCircle) +LABEL1: + return +} +func EnableBomberPitElevator() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.ObjectOn(obj21) +LABEL1: + return +} +func OpenBomberPitExit() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(159, 109)) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz08d/dummy_test.go b/examples/wiz08d/dummy_test.go new file mode 100644 index 0000000..67f935d --- /dev/null +++ b/examples/wiz08d/dummy_test.go @@ -0,0 +1,6 @@ +package wiz08d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz08d/wiz08d.go b/examples/wiz08d/wiz08d.go new file mode 100644 index 0000000..ac95105 --- /dev/null +++ b/examples/wiz08d/wiz08d.go @@ -0,0 +1,2353 @@ +package wiz08d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + gvar5 ns.ObjectGroupID + gvar6 ns.ObjectGroupID + gvar7 ns.ObjectGroupID + gvar8 ns.ObjectGroupID + wp9 ns.WaypointID + ivar10 int + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + wp25 ns.WaypointID + wp26 ns.WaypointID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + fvar41 float32 + fvar42 float32 + ivar43 int + str44 [3]string + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + flag53 bool + obj54 ns.ObjectID + obj55 ns.ObjectID + gvar56 ns.WallGroupID + obj57 ns.ObjectID + obj58 ns.ObjectID + obj59 ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + obj65 ns.ObjectID + obj66 ns.ObjectID + obj67 ns.ObjectID + gvar68 ns.ObjectGroupID + wp69 ns.WaypointID + wp70 ns.WaypointID + wp71 ns.WaypointID + wp72 ns.WaypointID + wp73 ns.WaypointID + wp74 ns.WaypointID + wp75 ns.WaypointID + obj76 ns.ObjectID + obj77 [15]ns.ObjectID + gvar78 [21]ns.ObjectGroupID + gvar79 int + ivar80 int + ivar81 int + ivar82 int + ivar83 int + ivar84 int + ivar85 [21]int + flag86 [21]bool + wp87 [21]ns.WaypointID + str88 [6]string +) + +func init() { + ivar10 = 0 + fvar41 = 0 + fvar42 = 0 + ivar43 = 0 + flag53 = false + gvar79 = 0 + ivar80 = 1 + ivar81 = 0 + ivar82 = 10 + ivar83 = 180 + ivar84 = 0 +} +func ArrowTrapAudio() { + ns.MoveWaypoint(wp9, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BowShoot, wp9) + ns.AudioEvent(ns.CrossBowShoot, wp9) +} +func DisableArrowTrap01() { + ns.ObjectGroupOff(gvar5) +} +func ActivateArrowTrap01() { + ns.ObjectGroupOn(gvar5) + ns.FrameTimer(1, DisableArrowTrap01) +} +func DisableArrowTrap02() { + ns.ObjectGroupOff(gvar6) +} +func ActivateArrowTrap02() { + ns.ObjectGroupOn(gvar6) + ns.FrameTimer(1, DisableArrowTrap02) +} +func DisableArrowTrap03() { + ns.ObjectGroupOff(gvar7) +} +func ActivateArrowTrap03() { + ns.ObjectGroupOn(gvar7) + ns.FrameTimer(1, DisableArrowTrap03) +} +func DisableUltimateArrowTrapGuns() { + ns.ObjectGroupOff(gvar8) +} +func ResetUltimateArrowTrap() { + ns.ObjectOn(obj4) +} +func UltimateArrowTrapLoop() { + if !(ivar10 < 8) { + goto LABEL1 + } + ivar10 += 1 + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, UltimateArrowTrapLoop) +LABEL1: + if ivar10 != 8 { + goto LABEL2 + } + ivar10 = 0 + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, ResetUltimateArrowTrap) +LABEL2: + return +} +func ActivateUltimateArrowTrap() { + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectGroupOn(gvar8) + ns.FrameTimer(1, DisableUltimateArrowTrapGuns) + ns.FrameTimer(10, UltimateArrowTrapLoop) +} +func InitializeBeholders() { + str44[0] = "SPELL_STUN" + str44[1] = "SPELL_CONFUSE" + str44[2] = "SPELL_FUMBLE" +} +func BeholderIdle() { + ns.Wander(ns.GetTrigger()) +} +func Beholder01Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj11) > 0 && ns.CurrentHealth(obj27) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj11) + v1 = ns.GetObjectY(obj11) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj27 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj27, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj11, obj27) + ns.CreatureFollow(obj27, obj11) +LABEL1: + return +} +func Beholder01Recognize() { + ns.FrameTimer(90, Beholder01Bombers) +} +func Beholder01Die() { + ns.Damage(obj27, 0, 500, 0) +} +func Beholder02Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj12) > 0 && ns.CurrentHealth(obj28) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj12) + v1 = ns.GetObjectY(obj12) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj28 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj28, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj12, obj28) + ns.CreatureFollow(obj28, obj12) +LABEL1: + return +} +func Beholder02Recognize() { + ns.FrameTimer(90, Beholder02Bombers) +} +func Beholder02Die() { + ns.Damage(obj28, 0, 500, 0) +} +func Beholder03Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj13) > 0 && ns.CurrentHealth(obj29) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj13) + v1 = ns.GetObjectY(obj13) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj29 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj29, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj13, obj29) + ns.CreatureFollow(obj29, obj13) +LABEL1: + return +} +func Beholder03Recognize() { + ns.FrameTimer(90, Beholder03Bombers) +} +func Beholder03Die() { + ns.Damage(obj29, 0, 500, 0) +} +func Beholder04Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj14) > 0 && ns.CurrentHealth(obj30) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj14) + v1 = ns.GetObjectY(obj14) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj30 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj30, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj14, obj30) + ns.CreatureFollow(obj30, obj14) +LABEL1: + return +} +func Beholder04Recognize() { + ns.FrameTimer(90, Beholder04Bombers) +} +func Beholder04Die() { + ns.Damage(obj30, 0, 500, 0) +} +func Beholder05Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj15) > 0 && ns.CurrentHealth(obj31) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj15) + v1 = ns.GetObjectY(obj15) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj31 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj31, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj15, obj31) + ns.CreatureFollow(obj31, obj15) +LABEL1: + return +} +func Beholder05Recognize() { + ns.FrameTimer(90, Beholder05Bombers) +} +func Beholder05Die() { + ns.Damage(obj31, 0, 500, 0) +} +func Beholder06Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj16) > 0 && ns.CurrentHealth(obj32) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj16) + v1 = ns.GetObjectY(obj16) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj32 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj32, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj16, obj32) + ns.CreatureFollow(obj32, obj16) +LABEL1: + return +} +func Beholder06Recognize() { + ns.FrameTimer(90, Beholder06Bombers) +} +func Beholder06Die() { + ns.Damage(obj32, 0, 500, 0) +} +func Beholder07Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj17) > 0 && ns.CurrentHealth(obj33) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj17) + v1 = ns.GetObjectY(obj17) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj33 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj33, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj17, obj33) + ns.CreatureFollow(obj33, obj17) +LABEL1: + return +} +func Beholder07Recognize() { + ns.FrameTimer(90, Beholder07Bombers) +} +func Beholder07Die() { + ns.Damage(obj33, 0, 500, 0) +} +func Beholder08Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj18) > 0 && ns.CurrentHealth(obj34) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj18) + v1 = ns.GetObjectY(obj18) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj34 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj34, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj18, obj34) + ns.CreatureFollow(obj34, obj18) +LABEL1: + return +} +func Beholder08Recognize() { + ns.FrameTimer(90, Beholder08Bombers) +} +func Beholder08Die() { + ns.Damage(obj34, 0, 500, 0) +} +func Beholder09Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj19) > 0 && ns.CurrentHealth(obj35) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj19) + v1 = ns.GetObjectY(obj19) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj35 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj35, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj19, obj35) + ns.CreatureFollow(obj35, obj19) +LABEL1: + return +} +func Beholder09Recognize() { + ns.FrameTimer(90, Beholder09Bombers) +} +func Beholder09Die() { + ns.Damage(obj35, 0, 500, 0) +} +func Beholder10Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj20) > 0 && ns.CurrentHealth(obj36) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj20) + v1 = ns.GetObjectY(obj20) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj36 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj36, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj20, obj36) + ns.CreatureFollow(obj36, obj20) +LABEL1: + return +} +func Beholder10Recognize() { + ns.FrameTimer(90, Beholder10Bombers) +} +func Beholder10Die() { + ns.Damage(obj36, 0, 500, 0) +} +func Beholder11Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj21) > 0 && ns.CurrentHealth(obj37) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj21) + v1 = ns.GetObjectY(obj21) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj37 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj37, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj21, obj37) + ns.CreatureFollow(obj37, obj21) +LABEL1: + return +} +func Beholder11Recognize() { + ns.FrameTimer(90, Beholder11Bombers) +} +func Beholder11Die() { + ns.Damage(obj37, 0, 500, 0) +} +func Beholder12Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj22) > 0 && ns.CurrentHealth(obj38) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj22) + v1 = ns.GetObjectY(obj22) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj38 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj38, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj22, obj38) + ns.CreatureFollow(obj38, obj22) +LABEL1: + return +} +func Beholder12Recognize() { + ns.FrameTimer(90, Beholder12Bombers) +} +func Beholder12Die() { + ns.Damage(obj38, 0, 500, 0) +} +func Beholder13Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj23) > 0 && ns.CurrentHealth(obj39) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj23) + v1 = ns.GetObjectY(obj23) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj39 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj39, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj23, obj39) + ns.CreatureFollow(obj39, obj23) +LABEL1: + return +} +func Beholder13Recognize() { + ns.FrameTimer(90, Beholder13Bombers) +} +func Beholder13Die() { + ns.Damage(obj39, 0, 500, 0) +} +func Beholder14Bombers() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 int + ) + _ = v3 + _ = v2 + if !(ns.CurrentHealth(obj24) > 0 && ns.CurrentHealth(obj40) <= 0) { + goto LABEL1 + } + v0 = ns.GetObjectX(obj24) + v1 = ns.GetObjectY(obj24) + ns.MoveWaypoint(wp26, v0, v1) + ns.AudioEvent(ns.SummonCast, wp26) + v2 = ns.RandomFloat(fvar41, fvar42) + v3 = ns.RandomFloat(fvar41, fvar42) + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + ivar43 = ns.Random(0, 2) + v4 = ivar43 + if v4 == 0 { + goto LABEL2 + } + if v4 == 1 { + goto LABEL3 + } + if v4 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberBlue", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL3: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberGreen", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL4: + ns.MoveWaypoint(wp25, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) + obj40 = ns.CreateObject("BomberYellow", wp25) + ns.TrapSpells(obj40, str44[ivar43], "", "") + goto LABEL5 +LABEL5: + ns.SetOwner(obj24, obj40) + ns.CreatureFollow(obj40, obj24) +LABEL1: + return +} +func Beholder14Recognize() { + ns.FrameTimer(90, Beholder14Bombers) +} +func Beholder14Die() { + ns.Damage(obj40, 0, 500, 0) +} +func OpenBlockPassage() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SpikeBlockMove, wp52) + ns.Move(obj45, wp48) + ns.Move(obj46, wp49) + ns.Move(obj47, wp51) +} +func SealBlockRoom() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.Move(obj46, wp50) +} +func CagedAnimalDie() { + if flag53 { + goto LABEL1 + } + flag53 = true + ns.WallGroupBreak(gvar56) +LABEL1: + return +} +func UnlockBearCage() { + ns.ObjectOff(ns.GetTrigger()) + ns.UnlockDoor(obj54) + ns.UnlockDoor(obj55) +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func FireFONTrap01() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj57, ns.GetWaypointX(wp69), ns.GetWaypointY(wp69)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj58, ns.GetWaypointX(wp70), ns.GetWaypointY(wp70)) + ns.SecondTimer(5, FireFONTrap01) +} +func EndFONSetpiece() { + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) +} +func BearAttack() { + ns.EnchantOff(obj62, ns.ENCHANT_INVULNERABLE) + ns.AggressionLevel(obj62, 0.83) + ns.Attack(obj62, ns.GetHost()) + ns.FrameTimer(45, FireFONTrap01) +} +func InitializeFONtraps() { + obj57 = ns.Object("FON_Origin01") + obj58 = ns.Object("FON_Origin02") + obj59 = ns.Object("FON_Origin03") + obj60 = ns.Object("FON_Origin04") + obj61 = ns.Object("FON_Origin05") + obj62 = ns.Object("Bear01") + obj63 = ns.Object("SpikeTrapDoor01") + obj64 = ns.Object("SpikeTrapDoor02") + obj65 = ns.Object("SpikeTrapDoor03") + obj66 = ns.Object("SpikeTrapDoor04") + gvar68 = ns.ObjectGroup("SpikeGroup01") + wp69 = ns.Waypoint("FON_Target01") + wp70 = ns.Waypoint("FON_Target02") + wp71 = ns.Waypoint("FON_Target03") + wp72 = ns.Waypoint("FON_Target04") + wp73 = ns.Waypoint("FON_Target05") + wp74 = ns.Waypoint("SpikeTrapAudioOrigin") + ns.Enchant(obj62, ns.ENCHANT_INVULNERABLE, 0) +} +func StartFONSetpiece() { + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.CreatureIdle(ns.GetHost()) + BearAttack() +} +func BearInjured() { + ns.Damage(ns.GetTrigger(), 0, 300, 0) +} +func BearDie() { + ns.FrameTimer(60, EndFONSetpiece) +} +func FireFONTrap02() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj59, ns.GetWaypointX(wp71), ns.GetWaypointY(wp71)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj60, ns.GetWaypointX(wp72), ns.GetWaypointY(wp72)) +} +func EnableSpikeTrap() { + ns.ObjectGroupOn(gvar68) + ns.ObjectOn(obj67) + ns.AudioEvent(ns.FloorSpikesUp, wp74) + ns.LockDoor(obj63) + ns.LockDoor(obj64) + ns.LockDoor(obj65) + ns.LockDoor(obj66) +} +func DisableSpikeTrap() { + ns.ObjectGroupOff(gvar68) + ns.ObjectOff(obj67) + ns.AudioEvent(ns.FloorSpikesDown, wp74) + ns.UnlockDoor(obj63) + ns.UnlockDoor(obj64) + ns.UnlockDoor(obj65) + ns.UnlockDoor(obj66) +} +func InitializeSummoningCircles() { + var v0 int + v0 = 0 + for { + if !(v0 < 21) { + goto LABEL1 + } + flag86[v0] = true + ivar85[v0] = 0 + v0 += 1 + } +LABEL1: + str88[0] = "UrchinShaman" + str88[1] = "Mimic" + str88[2] = "Bear" + str88[3] = "Urchin" + str88[4] = "Imp" + str88[5] = "WhiteWolf" + obj76 = ns.Object("SummoningCircleTreasureLight") + obj77[0] = ns.Object("SummoningCircleTreasure01") + obj77[1] = ns.Object("SummoningCircleTreasure02") + obj77[2] = ns.Object("SummoningCircleTreasure03") + obj77[3] = ns.Object("SummoningCircleTreasure04") + obj77[4] = ns.Object("SummoningCircleTreasure05") + obj77[5] = ns.Object("SummoningCircleTreasure06") + obj77[6] = ns.Object("SummoningCircleTreasure07") + obj77[7] = ns.Object("SummoningCircleTreasure08") + obj77[8] = ns.Object("SummoningCircleTreasure09") + obj77[9] = ns.Object("SummoningCircleTreasure10") + obj77[10] = ns.Object("SummoningCircleTreasure11") + obj77[11] = ns.Object("SummoningCircleTreasure12") + obj77[12] = ns.Object("SummoningCircleTreasure13") + obj77[13] = ns.Object("SummoningCircleTreasure14") + obj77[14] = ns.Object("SummoningCircleTreasure15") + wp87[0] = ns.Waypoint("SummoningCircle01WP") + wp87[1] = ns.Waypoint("SummoningCircle02WP") + wp87[2] = ns.Waypoint("SummoningCircle03WP") + wp87[3] = ns.Waypoint("SummoningCircle04WP") + wp87[4] = ns.Waypoint("SummoningCircle05WP") + wp87[5] = ns.Waypoint("SummoningCircle06WP") + wp87[6] = ns.Waypoint("SummoningCircle07WP") + wp87[7] = ns.Waypoint("SummoningCircle08WP") + wp87[8] = ns.Waypoint("SummoningCircle09WP") + wp87[9] = ns.Waypoint("SummoningCircle10WP") + wp87[10] = ns.Waypoint("SummoningCircle11WP") + wp87[11] = ns.Waypoint("SummoningCircle12WP") + wp87[12] = ns.Waypoint("SummoningCircle13WP") + wp87[13] = ns.Waypoint("SummoningCircle14WP") + wp87[14] = ns.Waypoint("SummoningCircle15WP") + wp87[15] = ns.Waypoint("SummoningCircle16WP") + wp87[16] = ns.Waypoint("SummoningCircle17WP") + wp87[17] = ns.Waypoint("SummoningCircle18WP") + wp87[18] = ns.Waypoint("SummoningCircle19WP") + wp87[19] = ns.Waypoint("SummoningCircle20WP") + wp87[20] = ns.Waypoint("SummoningCircle21WP") + gvar78[0] = ns.ObjectGroup("SummonCircle01Lights") + gvar78[1] = ns.ObjectGroup("SummonCircle02Lights") + gvar78[2] = ns.ObjectGroup("SummonCircle03Lights") + gvar78[3] = ns.ObjectGroup("SummonCircle04Lights") + gvar78[4] = ns.ObjectGroup("SummonCircle05Lights") + gvar78[5] = ns.ObjectGroup("SummonCircle06Lights") + gvar78[6] = ns.ObjectGroup("SummonCircle07Lights") + gvar78[7] = ns.ObjectGroup("SummonCircle08Lights") + gvar78[8] = ns.ObjectGroup("SummonCircle09Lights") + gvar78[9] = ns.ObjectGroup("SummonCircle10Lights") + gvar78[10] = ns.ObjectGroup("SummonCircle11Lights") + gvar78[11] = ns.ObjectGroup("SummonCircle12Lights") + gvar78[12] = ns.ObjectGroup("SummonCircle13Lights") + gvar78[13] = ns.ObjectGroup("SummonCircle14Lights") + gvar78[14] = ns.ObjectGroup("SummonCircle15Lights") + gvar78[15] = ns.ObjectGroup("SummonCircle16Lights") + gvar78[16] = ns.ObjectGroup("SummonCircle17Lights") + gvar78[17] = ns.ObjectGroup("SummonCircle18Lights") + gvar78[18] = ns.ObjectGroup("SummonCircle19Lights") + gvar78[19] = ns.ObjectGroup("SummonCircle20Lights") + gvar78[20] = ns.ObjectGroup("SummonCircle21Lights") +} +func MapInitialize() { + obj45 = ns.Object("StoneBlock01") + obj46 = ns.Object("StoneBlock02") + obj47 = ns.Object("StoneBlock03") + obj11 = ns.Object("Beholder01") + obj12 = ns.Object("Beholder02") + obj13 = ns.Object("Beholder03") + obj14 = ns.Object("Beholder04") + obj15 = ns.Object("Beholder05") + obj16 = ns.Object("Beholder06") + obj17 = ns.Object("Beholder07") + obj18 = ns.Object("Beholder08") + obj19 = ns.Object("Beholder09") + obj20 = ns.Object("Beholder10") + obj21 = ns.Object("Beholder11") + obj22 = ns.Object("Beholder12") + obj23 = ns.Object("Beholder13") + obj24 = ns.Object("Beholder14") + obj54 = ns.Object("CageGateL") + obj55 = ns.Object("CageGateR") + obj4 = ns.Object("UltimateArrowTrapSwitch") + obj67 = ns.Object("SpikeSFX") + wp9 = ns.Waypoint("ArrowTrapAudioOrigin") + wp48 = ns.Waypoint("StoneBlock01WP") + wp49 = ns.Waypoint("StoneBlock02WP") + wp50 = ns.Waypoint("StoneBlock02WP2") + wp51 = ns.Waypoint("StoneBlock03WP") + wp52 = ns.Waypoint("StoneBlockAudioOrigin") + wp25 = ns.Waypoint("BomberCreationWP") + wp26 = ns.Waypoint("BomberAudioOrigin") + wp75 = ns.Waypoint("SecretAudioOrigin") + gvar5 = ns.ObjectGroup("ArrowTrapGroup01") + gvar6 = ns.ObjectGroup("ArrowTrapGroup02") + gvar7 = ns.ObjectGroup("ArrowTrapGroup03") + gvar8 = ns.ObjectGroup("ArrowTrapGroup04") + gvar56 = ns.WallGroup("CageWalls") + ns.Wander(obj11) + ns.Wander(obj12) + ns.Wander(obj13) + ns.AggressionLevel(obj13, 0.83) + ns.Wander(obj14) + ns.AggressionLevel(obj14, 0.83) + ns.Wander(obj15) + ns.AggressionLevel(obj15, 0.83) + ns.Wander(obj16) + ns.AggressionLevel(obj16, 0.83) + ns.Wander(obj17) + ns.AggressionLevel(obj17, 0.83) + ns.Wander(obj18) + ns.AggressionLevel(obj18, 0.83) + ns.Wander(obj19) + ns.AggressionLevel(obj19, 0.83) + ns.Wander(obj20) + ns.AggressionLevel(obj20, 0.83) + ns.Wander(obj21) + ns.AggressionLevel(obj21, 0.83) + ns.Wander(obj22) + ns.AggressionLevel(obj22, 0.83) + ns.LockDoor(obj54) + ns.LockDoor(obj55) + InitializeBeholders() + InitializeSummoningCircles() + InitializeFONtraps() +} +func OpenPitElevatorWall() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(56, 134)) +} +func MonstersGoHome() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func SecretSFX() { + ns.MoveWaypoint(wp75, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, wp75) +} +func BoulderSecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 200) + SecretSFX() +} +func OpenBoulderSecret() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallOpen(ns.Wall(104, 40)) + ns.AudioEvent(ns.SecretWallOpen, ns.Waypoint("BoulderSecretAudioOrigin")) + SecretSFX() +} +func SecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) + SecretSFX() +} +func ResetSummonCircle(a1 int) { + flag86[a1] = true + ns.ObjectGroupOn(gvar78[a1]) +} +func SummoningCircleCleared(a1 int) { + ivar84 += 1 + if ivar84 != 15 { + goto LABEL1 + } + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 500) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1]), 0, 0) + ns.MoveObject(obj76, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.MoveObject(obj77[ivar84-1], ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.AudioEvent(ns.SmallGong, wp87[a1]) + goto LABEL2 +LABEL1: + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1]), 0, 0) + ns.MoveObject(obj76, ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.MoveObject(obj77[ivar84-1], ns.GetWaypointX(wp87[a1]), ns.GetWaypointY(wp87[a1])) + ns.AudioEvent(ns.BigGong, wp87[a1]) +LABEL2: + return +} +func SummonCircle01Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 0 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle02Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 1 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle03Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 2 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle04Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 3 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle05Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 4 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle06Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 5 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle07Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 6 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle08Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 7 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle09Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 8 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle10Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 9 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle11Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 10 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle12Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 11 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle13Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 12 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle14Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 13 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle15Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 14 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle16Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 15 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle17Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 16 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle18Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 17 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle19Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 18 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle20Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 19 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func SummonCircle21Activate() { + var ( + v0 ns.ObjectID + v1 int + ) + gvar79 = 20 + if !(ns.IsCaller(ns.GetHost()) && flag86[gvar79] == true) { + goto LABEL1 + } + flag86[gvar79] = false + ns.ObjectGroupOff(gvar78[gvar79]) + ns.AudioEvent(ns.SummonCast, wp87[gvar79]) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp87[gvar79]), ns.GetWaypointY(wp87[gvar79]), 0, 0) + if r4 := ns.Random(0, 100); !(r4 <= ivar82) { + goto LABEL2 + } + v1 = ns.Random(0, 1) + if v1 == 0 { + goto LABEL3 + } + if v1 == 1 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + v0 = ns.CreateObject("BomberYellow", wp87[gvar79]) + ns.TrapSpells(v0, ns.SPELL_METEOR, "", "") + goto LABEL5 +LABEL4: + v0 = ns.CreateObject("Bomber", wp87[gvar79]) + goto LABEL5 +LABEL5: + goto LABEL6 +LABEL2: + ivar81 = ns.Random(0, 5) + ns.CreateObject(str88[ivar81], wp87[gvar79]) +LABEL6: + ivar85[gvar79] += 1 + if !(ivar85[gvar79] > ivar80) { + goto LABEL7 + } + ns.FrameTimerWithArg(30, gvar79, SummoningCircleCleared) + goto LABEL1 +LABEL7: + ns.FrameTimerWithArg(ivar83, gvar79, ResetSummonCircle) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/wiz08e/dummy_test.go b/examples/wiz08e/dummy_test.go new file mode 100644 index 0000000..e5471d2 --- /dev/null +++ b/examples/wiz08e/dummy_test.go @@ -0,0 +1,6 @@ +package wiz08e + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz08e/wiz08e.go b/examples/wiz08e/wiz08e.go new file mode 100644 index 0000000..7fd637c --- /dev/null +++ b/examples/wiz08e/wiz08e.go @@ -0,0 +1,388 @@ +package wiz08e + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + wp9 ns.WaypointID + wp10 ns.WaypointID + wp11 ns.WaypointID + wp12 ns.WaypointID + wp13 ns.WaypointID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.WallGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + gvar30 ns.WallGroupID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + gvar41 int + gvar42 int + gvar43 int + gvar44 int + gvar45 int + gvar46 int + gvar47 int + gvar48 int + gvar49 int + obj50 ns.ObjectID + obj51 ns.ObjectID + flag52 bool + flag53 bool + flag54 bool + flag55 bool + flag56 bool + wp57 ns.WaypointID + flag58 bool +) + +func init() { + gvar41 = 0 + gvar42 = 1 + gvar43 = 2 + gvar44 = 3 + gvar45 = 4 + gvar46 = 5 + gvar47 = 6 + gvar48 = gvar41 + gvar49 = gvar46 + flag52 = false + flag53 = false + flag54 = false + flag55 = false + flag56 = false + flag58 = false +} +func PlayerDeath() { + ns.DeathScreen(8) +} +func FireFONTrap01() { + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj4, ns.GetWaypointX(wp9), ns.GetWaypointY(wp9)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj5, ns.GetWaypointX(wp10), ns.GetWaypointY(wp10)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj6, ns.GetWaypointX(wp11), ns.GetWaypointY(wp11)) + ns.CastSpellObjectLocation(ns.SPELL_FORCE_OF_NATURE, obj7, ns.GetWaypointX(wp12), ns.GetWaypointY(wp12)) + ns.SecondTimer(5, FireFONTrap01) +} +func InitializeFONtraps() { + obj4 = ns.Object("FON_Origin01") + obj5 = ns.Object("FON_Origin02") + obj6 = ns.Object("FON_Origin03") + obj7 = ns.Object("FON_Origin04") + obj8 = ns.Object("FON_Origin05") + wp9 = ns.Waypoint("FON_Target01") + wp10 = ns.Waypoint("FON_Target02") + wp11 = ns.Waypoint("FON_Target03") + wp12 = ns.Waypoint("FON_Target04") + wp13 = ns.Waypoint("FON_Target05") + FireFONTrap01() +} +func OpenFONSecret() { + ns.ObjectOff(ns.GetTrigger()) + ns.AudioEvent(ns.SecretWallOpen, ns.Waypoint("FonSecretWP")) + ns.WallOpen(ns.Wall(44, 122)) +} +func MapInitialize() { + obj14 = ns.Object("MoverA1") + obj15 = ns.Object("MoverA2") + obj16 = ns.Object("MoverA3") + obj17 = ns.Object("MoverB1") + obj18 = ns.Object("MoverB2") + obj19 = ns.Object("MoverB3") + obj20 = ns.Object("Priest01") + obj21 = ns.Object("Priest02") + obj22 = ns.Object("Imp01") + obj23 = ns.Object("Imp02") + obj24 = ns.Object("WierdlingPool") + wp31 = ns.Waypoint("GolemWP_A") + wp32 = ns.Waypoint("GolemWP_B") + wp33 = ns.Waypoint("Priest01WP") + wp34 = ns.Waypoint("Priest02WP") + wp35 = ns.Waypoint("Priest1Home") + wp36 = ns.Waypoint("Priest2Home") + wp37 = ns.Waypoint("Priest1ExitWP") + wp38 = ns.Waypoint("Priest2ExitWP") + wp39 = ns.Waypoint("ImpCreationWP") + wp40 = ns.Waypoint("WierdlingPoolWP") + gvar25 = ns.ObjectGroup("GolemLights") + gvar26 = ns.ObjectGroup("GolemHandleTriggers") + gvar27 = ns.WallGroup("GolemArenaEntranceWalls") + gvar28 = ns.WallGroup("GolemArenaExitWalls") + gvar29 = ns.WallGroup("WierdlingExitWalls") + gvar30 = ns.WallGroup("AldwynElevatorWalls") + ns.SetOwner(ns.GetHost(), obj20) + ns.SetOwner(ns.GetHost(), obj21) + InitializeFONtraps() +} +func OpenElevatorWalls() { + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar30) +} +func NoMonsters() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func PlaySub1Music() { + ns.Music(18, 100) +} +func PlaySub2Music() { + ns.Music(19, 100) +} +func SecretFound() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(ns.Waypoint("FonSecretWP"), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.SecretFound, ns.Waypoint("FonSecretWP")) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 200) +} +func PriestReport() { + var v0 int + v0 = gvar48 + if v0 == gvar42 { + goto LABEL1 + } + if v0 == gvar43 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + if !ns.IsTrigger(obj22) { + goto LABEL4 + } + flag53 = true + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj22), ns.GetObjectY(obj22), 0, 0) + ns.AudioEvent(ns.ImpRecognize, wp57) + ns.MoveObject(obj20, ns.GetObjectX(obj22), ns.GetObjectY(obj22)) + ns.Delete(obj22) +LABEL4: + if !ns.IsTrigger(obj23) { + goto LABEL5 + } + flag54 = true + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj23), ns.GetObjectY(obj23), 0, 0) + ns.AudioEvent(ns.ImpRecognize, wp57) + ns.MoveObject(obj21, ns.GetObjectX(obj23), ns.GetObjectY(obj23)) + ns.Delete(obj23) +LABEL5: + if !flag53 { + goto LABEL6 + } + if !flag54 { + goto LABEL6 + } + gvar48 = gvar44 + ns.FrameTimer(30, SummonGolems) +LABEL6: + goto LABEL3 +LABEL2: + if !ns.IsTrigger(obj22) { + goto LABEL7 + } + flag55 = true +LABEL7: + if !ns.IsTrigger(obj23) { + goto LABEL8 + } + flag56 = true +LABEL8: + if !(flag55 && flag56) { + goto LABEL9 + } + ns.WallGroupClose(gvar28) + gvar48 = gvar45 + ns.Delete(obj22) + ns.Delete(obj23) +LABEL9: + goto LABEL3 +LABEL3: + return +} +func GolemDie() { + if !(ns.CurrentHealth(obj50) <= 0 && ns.CurrentHealth(obj51) <= 0) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 1000) + ns.WallGroupOpen(gvar28) + ns.AudioEvent(ns.BigGong, wp33) + ns.AudioEvent(ns.BigGong, wp34) +LABEL1: + return +} +func GolemsAttack() { + ns.Attack(obj50, ns.GetHost()) + ns.Attack(obj51, ns.GetHost()) +} +func RemoveLetterbox() { + ns.WideScreen(false) + ns.Delete(obj22) + ns.Delete(obj23) + ns.Frozen(ns.GetHost(), false) + ns.Music(27, 100) + ns.FrameTimer(45, GolemsAttack) +} +func ImpsExit() { + ns.Move(obj22, wp37) + ns.Move(obj23, wp38) +} +func PriestsExit() { + gvar48 = gvar43 + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj20), ns.GetObjectY(obj20), 0, 0) + ns.MoveWaypoint(wp39, ns.GetObjectX(obj20), ns.GetObjectY(obj20)) + obj22 = ns.CreateObject("Imp", wp39) + ns.MoveObject(obj20, ns.GetWaypointX(wp35), ns.GetWaypointY(wp35)) + ns.AudioEvent(ns.ImpRecognize, wp39) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj21), ns.GetObjectY(obj21), 0, 0) + ns.MoveWaypoint(wp39, ns.GetObjectX(obj21), ns.GetObjectY(obj21)) + obj23 = ns.CreateObject("Imp", wp39) + ns.MoveObject(obj21, ns.GetWaypointX(wp36), ns.GetWaypointY(wp36)) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj23) + ns.AggressionLevel(obj22, 0) + ns.AggressionLevel(obj23, 0) + ns.SetCallback(obj22, 11, PriestReport) + ns.SetCallback(obj23, 11, PriestReport) + ns.FrameTimer(1, ImpsExit) +} +func GetGolemHandles() { + var v0 int + if !(flag52 || ns.IsCaller(obj22) || ns.IsCaller(obj23)) { + goto LABEL1 + } + return +LABEL1: + v0 = gvar49 + if v0 == gvar46 { + goto LABEL2 + } + if v0 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL2: + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + obj50 = ns.GetCaller() + ns.SetCallback(obj50, 5, GolemDie) + ns.ClearOwner(obj20) + ns.CreatureIdle(obj50) + ns.ClearOwner(obj50) + ns.AggressionLevel(obj50, 0) + gvar49 = gvar47 + goto LABEL5 +LABEL3: + ns.ObjectOff(ns.GetTrigger()) + ns.DestroyEveryChat() + obj51 = ns.GetCaller() + ns.SetCallback(obj51, 5, GolemDie) + ns.ClearOwner(obj21) + ns.ClearOwner(obj51) + ns.CreatureIdle(obj51) + ns.AggressionLevel(obj51, 0) + ns.LookAtObject(obj50, ns.GetHost()) + ns.LookAtObject(obj51, ns.GetHost()) + flag52 = true + ns.AggressionLevel(obj50, 0.83) + ns.AggressionLevel(obj51, 0.83) + RemoveLetterbox() + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func SummonGolems() { + ns.CastSpellObjectLocation(ns.SPELL_SUMMON_STONE_GOLEM, obj20, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31)) + ns.CastSpellObjectLocation(ns.SPELL_SUMMON_STONE_GOLEM, obj21, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32)) + ns.AudioEvent(ns.SummonCast, wp33) + ns.AudioEvent(ns.SummonCast, wp34) + ns.ObjectGroupOn(gvar26) + ns.ObjectGroupOff(gvar25) + ns.FrameTimer(60, PriestsExit) +} +func ImpsEnter() { + ns.WallGroupOpen(gvar28) + ns.Move(obj22, wp33) + ns.Move(obj23, wp34) +} +func GolemSetPiece() { + if gvar48 == gvar41 { + goto LABEL1 + } + return +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.MusicPushEvent() + ns.Music(10, 100) + wp57 = ns.Waypoint("GolemSP_AudioOrigin") + ns.MoveWaypoint(wp57, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + gvar48 = gvar42 + ns.WallGroupClose(gvar27) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.WideScreen(true) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj23) + ns.FrameTimer(15, ImpsEnter) +LABEL2: + return +} +func RetrieveWierdling() { + if !flag58 { + goto LABEL1 + } + return +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.MusicPopEvent() + ns.SetQuestStatus(1, "Chapter8:HasWeirdling") + flag58 = true + ns.SetHalberd(2) + ns.ObjectOff(obj24) + ns.WallGroupOpen(gvar29) + ns.JournalEdit(ns.GetHost(), "Chapter8Wierdling", 4) + ns.PrintToAll("Con02a:ObjectiveComplete") + ns.JournalEntry(ns.GetHost(), "Chapter8MeetCaptain", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL2: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/wiz09a/dummy_test.go b/examples/wiz09a/dummy_test.go new file mode 100644 index 0000000..e93a599 --- /dev/null +++ b/examples/wiz09a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz09a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz09a/wiz09a.go b/examples/wiz09a/wiz09a.go new file mode 100644 index 0000000..7d6fbd7 --- /dev/null +++ b/examples/wiz09a/wiz09a.go @@ -0,0 +1,745 @@ +package wiz09a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 [2]ns.ObjectID + wp5 [2]ns.WaypointID + gvar6 ns.WallGroupID + wp7 [5]ns.WaypointID + wp8 [6]ns.WaypointID + obj9 [6]ns.ObjectID + gvar10 int + ivar11 int + ivar12 int + gvar13 int + flag14 bool + flag15 bool + flag16 bool + fvar17 float32 + fvar18 float32 + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + gvar34 ns.ObjectGroupID + gvar35 ns.ObjectGroupID + gvar36 ns.ObjectGroupID + gvar37 ns.ObjectGroupID + gvar38 ns.WallGroupID + gvar39 ns.WallGroupID + gvar40 ns.WallGroupID + gvar41 ns.WallGroupID + gvar42 ns.WallGroupID + gvar43 ns.WallGroupID + gvar44 ns.WallGroupID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + gvar48 [9]int + wp49 ns.WaypointID + wp50 ns.WaypointID + flag51 bool + flag52 bool + gvar53 int + gvar54 int + gvar55 int + gvar56 int + gvar57 int + gvar58 int + gvar59 int + gvar60 int + gvar61 int + gvar62 int + gvar63 int + flag64 bool + gvar65 int + gvar66 int + gvar67 int + gvar68 int + gvar69 int + gvar70 int + ivar71 int + ivar72 int + obj73 [8]ns.ObjectID + wp74 [8]ns.WaypointID + gvar75 [8]int + ivar76 [8]int + gvar77 [8]ns.TimerID +) + +func init() { + gvar10 = 0 + gvar13 = 0 + flag14 = false + flag15 = false + flag16 = false + flag51 = false + flag52 = false + gvar53 = 0 + gvar54 = 1 + gvar55 = 2 + gvar56 = 3 + gvar57 = 4 + gvar58 = 5 + gvar59 = 6 + gvar62 = gvar53 + gvar63 = gvar56 + flag64 = false + gvar65 = 0 + gvar66 = 1 + gvar67 = 2 + gvar68 = 3 + gvar69 = 4 + gvar70 = 5 + ivar71 = 15 + ivar72 = 2 +} +func PlantBarrier() { + ivar11 = 0 + for { + if !(ivar11 < 6) { + goto LABEL1 + } + CreatePlant(ivar11) + ivar11 += 1 + } +LABEL1: + return +} +func CreatePlant(a1 int) { + obj9[a1] = ns.CreateObject("CarnivorousPlant", wp8[a1]) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj9[a1]), ns.GetObjectY(obj9[a1]), 0, 0) + ns.LookAtObject(obj9[a1], ns.GetHost()) + ns.SetOwner(obj4[0], obj9[a1]) + ns.SetCallback(obj9[a1], 7, AttackBack) +} +func CheckPlants() { + if !(flag15 == false || flag16 == false) { + goto LABEL1 + } + ivar11 = 0 + for { + if !(ivar11 < 6) { + goto LABEL2 + } + if !(ns.CurrentHealth(obj9[ivar11]) <= 0) { + goto LABEL3 + } + ns.FrameTimerWithArg(14, ivar11, PlantDie) + LABEL3: + ivar11 += 1 + } +LABEL2: + ns.FrameTimer(15, CheckPlants) +LABEL1: + return +} +func PlantDie(a1 int) { + if !(flag15 == false || flag16 == false) { + goto LABEL1 + } + ns.Delete(obj9[a1]) + CreatePlant(a1) +LABEL1: + return +} +func AttackBack() { + if ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Attack(ns.GetTrigger(), ns.GetCaller()) +LABEL1: + return +} +func PlayAction() { + ns.Music(26, 100) +} +func PlaySwamp() { + ns.Music(29, 100) +} +func DryadHuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func StartDryadSequence() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && flag14 == false) { + goto LABEL1 + } + flag14 = true + ns.SetOwner(obj4[0], obj4[1]) + ns.MusicPushEvent() + PlayAction() + ns.NoWallSound(true) + ns.WallGroupClose(gvar6) + ns.NoWallSound(false) + v0 = 0 + for { + if !(v0 < 2) { + goto LABEL2 + } + ns.ObjectOn(obj4[v0]) + ns.Enchant(obj4[v0], ns.ENCHANT_INVISIBLE, 1) + ns.MoveObject(obj4[v0], ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0])) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp5[v0]), ns.GetWaypointY(wp5[v0]), 0, 0) + v0 += 1 + } +LABEL2: + PlantBarrier() + ns.FrameTimer(1, CheckPlants) +LABEL1: + return +} +func DryadDie() { + if !ns.IsTrigger(obj4[0]) { + goto LABEL1 + } + flag15 = true +LABEL1: + if !ns.IsTrigger(obj4[1]) { + goto LABEL2 + } + flag16 = true +LABEL2: + if !(flag15 == true && flag16 == true) { + goto LABEL3 + } + ns.NoWallSound(true) + ns.WallGroupOpen(gvar6) + ns.NoWallSound(false) + ns.MusicPopEvent() +LABEL3: + return +} +func DryadStay() { + if !(ns.IsCaller(obj4[0]) || ns.IsCaller(obj4[1])) { + goto LABEL1 + } + ivar12 = ns.Random(0, 4) + fvar17 = ns.GetWaypointX(wp7[ivar12]) + fvar18 = ns.GetWaypointY(wp7[ivar12]) + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 1.5) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(ns.GetCaller(), fvar17, fvar18) + ns.Effect(ns.BLUE_SPARKS, fvar17, fvar18, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar17, fvar18, 0, 0) +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func CaptainDialogStart() { + var v0 int + v0 = gvar62 + if v0 == gvar53 { + goto LABEL1 + } + if v0 == gvar54 { + goto LABEL2 + } + if v0 == gvar55 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainGreet") + goto LABEL4 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainLeave") + goto LABEL4 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09a:CaptainImpatient") + goto LABEL4 +LABEL4: + return +} +func CaptainDialogEnd() { + var v0 int + v0 = gvar62 + if v0 == gvar53 { + goto LABEL1 + } + if v0 == gvar54 { + goto LABEL2 + } + if v0 == gvar55 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.JournalEntry(ns.GetHost(), "FindMordwyn", 2) + ns.JournalEntry(ns.GetHost(), "FindOutpost", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + PlaySwamp() + gvar62 = gvar54 + goto LABEL4 +LABEL2: + gvar62 = gvar55 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func MordwynDialogStart() { + var v0 int + v0 = gvar63 + if v0 == gvar56 { + goto LABEL1 + } + if v0 == gvar57 { + goto LABEL2 + } + if v0 == gvar58 { + goto LABEL3 + } + if v0 == gvar59 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War09a:MordwynGreet") + goto LABEL5 +LABEL2: + ns.LookAtObject(obj19, ns.GetHost()) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.TellStory(ns.SwordsmanHurt, "Con09a:MordwynHome") + goto LABEL5 +LABEL3: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "Con09a:MordwynHome2") + goto LABEL5 +LABEL4: + ns.LookAtObject(obj19, ns.GetHost()) + ns.TellStory(ns.SwordsmanHurt, "War09a:MordwynDone") + goto LABEL5 +LABEL5: + return +} +func MordwynDialogEnd() { + var v0 int + v0 = gvar63 + if v0 == gvar56 { + goto LABEL1 + } + if v0 == gvar57 { + goto LABEL2 + } + if v0 == gvar58 { + goto LABEL3 + } + if v0 == gvar59 { + goto LABEL4 + } + goto LABEL5 +LABEL1: + gvar63 = gvar57 + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.JournalEdit(ns.GetHost(), "FindMordwyn", 4) + ns.CancelDialog(obj19) + ns.SetCallback(obj19, 11, AllowDialog) + ns.Move(obj19, wp46) + goto LABEL5 +LABEL2: + gvar63 = gvar58 + ns.SetCallback(obj19, 11, GetArmorOfJandor) + ns.Move(obj19, wp47) + goto LABEL5 +LABEL3: + gvar63 = gvar59 + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.CreatureGuard(obj19, ns.GetWaypointX(wp46), ns.GetWaypointY(wp46), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + ns.SetCallback(obj19, 11, NullFunction) + ns.Pickup(ns.GetHost(), obj23) + ns.Pickup(ns.GetHost(), obj24) + ns.PrintToAll("Wiz09a:GainedCloak") + goto LABEL5 +LABEL4: + goto LABEL5 +LABEL5: + return +} +func StartCaptainConversation() { + ns.SetDialog(obj20, ns.NORMAL, CaptainDialogStart, CaptainDialogEnd) + ns.StartDialog(obj20, ns.GetHost()) +} +func WispInitialize() { + obj73[0] = ns.Object("Wisp0") + gvar75[0] = gvar65 + wp74[0] = ns.Waypoint("Wisp0Dest") + obj73[1] = ns.Object("Wisp1") + gvar75[1] = gvar65 + wp74[1] = ns.Waypoint("Wisp1Dest") +} +func MapInitialize() { + obj20 = ns.Object("Jandor") + obj21 = ns.Object("Basket") + obj22 = ns.Object("BasketShadow") + obj19 = ns.Object("Mordwyn") + obj23 = ns.Object("JCloak") + obj24 = ns.Object("JBoots") + obj25 = ns.Object("PitElev01") + obj26 = ns.Object("PitElev02") + obj27 = ns.Object("PitElev03") + obj28 = ns.Object("TreasureTrap01") + obj29 = ns.Object("TreasureTrap01Light") + obj30 = ns.Object("Secret02Trigger") + obj4[0] = ns.Object("Dryad0") + obj4[1] = ns.Object("Dryad1") + gvar38 = ns.WallGroup("Surprise00Walls") + gvar39 = ns.WallGroup("Surprise00DestWalls") + gvar40 = ns.WallGroup("Surprise01Walls") + gvar41 = ns.WallGroup("Surprise01DWalls") + gvar42 = ns.WallGroup("Surprise02Walls") + gvar43 = ns.WallGroup("Surprise02DestWalls") + gvar44 = ns.WallGroup("TreasureTrap01Walls") + gvar6 = ns.WallGroup("DryadWalls") + gvar33 = ns.ObjectGroup("Surprise00Triggers") + gvar32 = ns.ObjectGroup("Surprise00Creatures") + gvar34 = ns.ObjectGroup("Surprise01Creatures") + gvar35 = ns.ObjectGroup("Surprise01Triggers") + gvar31 = ns.ObjectGroup("MordwynTriggers") + gvar36 = ns.ObjectGroup("TreasureTrap01Zombies") + gvar37 = ns.ObjectGroup("Secret01Triggers") + wp45 = ns.Waypoint("TalkToPlayer") + wp46 = ns.Waypoint("MordwynHome") + wp47 = ns.Waypoint("MordwynBedroom") + wp5[0] = ns.Waypoint("DryadHome0") + wp5[1] = ns.Waypoint("DryadHome1") + wp7[0] = ns.Waypoint("DryadWarp0") + wp7[1] = ns.Waypoint("DryadWarp1") + wp7[2] = ns.Waypoint("DryadWarp2") + wp7[3] = ns.Waypoint("DryadWarp3") + wp7[4] = ns.Waypoint("DryadWarp4") + wp8[0] = ns.Waypoint("PlantLoc0") + wp8[1] = ns.Waypoint("PlantLoc1") + wp8[2] = ns.Waypoint("PlantLoc2") + wp8[3] = ns.Waypoint("PlantLoc3") + wp8[4] = ns.Waypoint("PlantLoc4") + wp8[5] = ns.Waypoint("PlantLoc5") + wp49 = ns.Waypoint("WellWP") + wp50 = ns.Waypoint("PlayerSounds") + ns.SetOwner(ns.GetHost(), obj20) + ns.UnBlind() + WispInitialize() + ns.StoryPic(obj20, "AirshipCaptainPic") + ns.StoryPic(obj19, "MordwynPic") + ns.SetDialog(obj19, ns.NORMAL, MordwynDialogStart, MordwynDialogEnd) + ns.StartupScreen(9) + ns.Music(0, 100) + ns.FrameTimer(5, StartCaptainConversation) + ns.ObjectOn(ns.Object("StayHere1")) + ns.Move(ns.Object("StayHere1"), ns.Waypoint("Here1")) + ns.ObjectOn(ns.Object("StayHere2")) + ns.Move(ns.Object("StayHere2"), ns.Waypoint("Here2")) + ns.ObjectOn(ns.Object("StayHere3")) + ns.Move(ns.Object("StayHere3"), ns.Waypoint("Here3")) + ns.ObjectOn(ns.Object("StayHere4")) + ns.Move(ns.Object("StayHere4"), ns.Waypoint("Here4")) + ns.ObjectOn(ns.Object("StayHere5")) + ns.Move(ns.Object("StayHere5"), ns.Waypoint("Here5")) +} +func MordwynGreet() { + ns.LookAtObject(obj19, ns.GetHost()) + ns.StartDialog(obj19, ns.GetHost()) + ns.SetCallback(obj19, 11, NullFunction) +} +func GetArmorOfJandor() { + ns.PauseObject(obj19, 75) + ns.SetCallback(obj19, 11, GiveArmorToPlayer) + ns.Move(obj19, wp46) +} +func GiveArmorToPlayer() { + ns.LookAtObject(obj19, ns.GetHost()) + ns.StartDialog(obj19, ns.GetHost()) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func CapTakeoff() { + if !(ns.IsCaller(ns.GetHost()) && flag52 == false) { + goto LABEL1 + } + flag52 = true + ns.Delete(obj21) + ns.Delete(obj22) + ns.Delete(obj20) +LABEL1: + return +} +func NullFunction() { +} +func MordwynMove() { + ns.ObjectGroupOff(gvar31) + ns.ObjectOn(obj19) + ns.SetOwner(ns.GetHost(), obj19) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.Move(obj19, wp45) +} +func AllowDialog() { + ns.CreatureGuard(obj19, ns.GetWaypointX(wp46), ns.GetWaypointY(wp46), ns.GetWaypointX(wp45), ns.GetWaypointY(wp45), 0) + ns.SetDialog(obj19, ns.NORMAL, MordwynDialogStart, MordwynDialogEnd) +} +func Surprise00() { + ns.ObjectGroupOff(gvar33) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar38) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar39) + ns.ObjectGroupOn(gvar32) + ns.GroupWander(gvar32) +} +func Surprise01() { + ns.ObjectGroupOff(gvar35) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar40) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar41) + ns.ObjectGroupOn(gvar34) +} +func Secret01Declare() { + ns.ObjectGroupOff(gvar37) + ns.MoveWaypoint(wp50, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp50) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 100) +} +func Secret02Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp50, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp50) + ns.GiveXp(ns.GetHost(), 100) +} +func EnablePitElev01() { + ns.ObjectOn(obj25) +} +func EnablePitElev02() { + ns.ObjectOn(obj26) +} +func EnablePitElev03() { + ns.ObjectOn(obj27) +} +func TriggerTreasureTrap() { + ns.WallGroupBreak(gvar44) + ns.ObjectOff(obj29) + ns.GroupAggressionLevel(gvar36, 0.83) + ns.GroupWander(gvar36) +} +func MapEntry() { + ns.NoWallSound(false) +} +func whichWisp(a1 ns.ObjectID) int { + var v0 int + v0 = 0 + for { + if !(v0 < ivar72) { + goto LABEL1 + } + if obj73[v0] != a1 { + goto LABEL2 + } + return v0 + LABEL2: + v0 += 1 + } +LABEL1: + return -1 + return 1 +} +func WispAction(a1 int) { + var ( + v0 float32 + v1 int + ) + v1 = gvar75[a1] + if v1 == gvar66 { + goto LABEL1 + } + if v1 == gvar68 { + goto LABEL2 + } + if v1 == gvar67 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Distance(ns.GetObjectX(obj73[a1]), ns.GetObjectY(obj73[a1]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v0 < 70) { + goto LABEL5 + } + gvar75[a1] = gvar67 + ns.Move(obj73[a1], wp74[a1]) +LABEL5: + goto LABEL4 +LABEL2: + ns.LookAtObject(obj73[a1], ns.GetHost()) + ivar76[a1] += 1 + if !(ivar76[a1] > 4) { + goto LABEL6 + } + gvar75[a1] = gvar66 + ns.CreatureFollow(obj73[a1], ns.GetHost()) +LABEL6: + goto LABEL4 +LABEL3: + v0 = ns.Distance(ns.GetObjectX(obj73[a1]), ns.GetObjectY(obj73[a1]), ns.GetWaypointX(wp74[a1]), ns.GetWaypointY(wp74[a1])) + if !(v0 < 30) { + goto LABEL7 + } + gvar75[a1] = gvar69 + ns.CreatureIdle(obj73[a1]) + return +LABEL7: + goto LABEL4 +LABEL4: + ns.FrameTimerWithArg(ivar71, a1, WispAction) +} +func WispRecognize() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar75[v0] + if v1 == gvar65 { + goto LABEL3 + } + if v1 == gvar68 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + gvar75[v0] = gvar66 + ns.CreatureFollow(ns.GetTrigger(), ns.GetCaller()) + gvar77[v0] = ns.FrameTimerWithArg(ivar71, v0, WispAction) + goto LABEL5 +LABEL4: + gvar75[v0] = gvar67 + ns.Move(ns.GetTrigger(), wp74[v0]) + goto LABEL5 +LABEL5: + return +} +func WispLoseSight() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar75[v0] + if v1 == gvar67 { + goto LABEL3 + } + goto LABEL4 +LABEL3: + gvar75[v0] = gvar68 + ivar76[v0] = 0 + ns.CreatureIdle(ns.GetTrigger()) + goto LABEL4 +LABEL4: + return +} +func WispGetMad() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) + v0 = whichWisp(ns.GetTrigger()) + if !(v0 >= 0) { + goto LABEL1 + } + gvar75[v0] = gvar70 + ns.CancelTimer(gvar77[v0]) +LABEL1: + return +} +func WispMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func MakeAWish() { + var v0 int + v0 = ns.MaxHealth(ns.GetCaller()) + ns.RestoreHealth(ns.GetCaller(), v0-ns.CurrentHealth(ns.GetCaller())) + ns.PrintToAll("GeneralPrint:WellSignRefresh") + ns.AudioEvent(ns.RestoreHealthName, wp49) +} +func PlayMordwyn() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(21, 100) +LABEL1: + return +} +func PlayOgre() { + ns.Music(7, 100) +} +func PlayCaves() { + ns.Music(18, 100) +} +func PlayWasteland() { + ns.Music(19, 100) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz09b/dummy_test.go b/examples/wiz09b/dummy_test.go new file mode 100644 index 0000000..dbe102a --- /dev/null +++ b/examples/wiz09b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz09b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz09b/wiz09b.go b/examples/wiz09b/wiz09b.go new file mode 100644 index 0000000..2639955 --- /dev/null +++ b/examples/wiz09b/wiz09b.go @@ -0,0 +1,803 @@ +package wiz09b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.ObjectGroupID + gvar28 ns.ObjectGroupID + gvar29 ns.ObjectGroupID + gvar30 ns.ObjectGroupID + gvar31 ns.ObjectGroupID + gvar32 ns.ObjectGroupID + gvar33 ns.ObjectGroupID + gvar34 ns.ObjectGroupID + gvar35 ns.ObjectGroupID + gvar36 ns.ObjectGroupID + gvar37 ns.WallGroupID + gvar38 ns.WallGroupID + gvar39 ns.WallGroupID + gvar40 ns.WallGroupID + gvar41 ns.WallGroupID + gvar42 ns.WallGroupID + wp43 ns.WaypointID + wp44 ns.WaypointID + wp45 [9]ns.WaypointID + wp46 [3]ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + flag53 bool + gvar54 int + gvar55 int + gvar56 int + gvar57 int + gvar58 int + obj59 [9]ns.ObjectID + obj60 ns.ObjectID + obj61 ns.ObjectID + gvar62 int + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + gvar68 int + gvar69 int + gvar70 int + gvar71 int + gvar72 int + gvar73 int + ivar74 int + ivar75 int + obj76 [8]ns.ObjectID + wp77 [8]ns.WaypointID + gvar78 [8]int + ivar79 [8]int + gvar80 [8]ns.TimerID +) + +func init() { + flag53 = false + gvar54 = 0 + gvar55 = 1 + gvar56 = 2 + gvar57 = 3 + gvar58 = 4 + gvar62 = gvar54 + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + gvar68 = 0 + gvar69 = 1 + gvar70 = 2 + gvar71 = 3 + gvar72 = 4 + gvar73 = 5 + ivar74 = 15 + ivar75 = 2 +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func AidanDialogStart() { + var v0 int + v0 = gvar62 + if v0 == gvar54 { + goto LABEL1 + } + if v0 == gvar55 { + goto LABEL2 + } + if v0 == gvar56 { + goto LABEL3 + } + if v0 == gvar57 { + goto LABEL4 + } + if v0 == gvar58 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + ns.DestroyChat(obj4) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanGreet1") + flag53 = true + goto LABEL6 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanGreet2") + goto LABEL6 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanWaiting") + goto LABEL6 +LABEL4: + ns.DestroyChat(obj4) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanThankful") + goto LABEL6 +LABEL5: + ns.DestroyChat(obj4) + ns.TellStory(ns.SwordsmanHurt, "War09a:AidanLeaving") + goto LABEL6 +LABEL6: + return +} +func AidanDialogEnd() { + var v0 int + v0 = gvar62 + if v0 == gvar54 { + goto LABEL1 + } + if v0 == gvar55 { + goto LABEL2 + } + if v0 == gvar56 { + goto LABEL3 + } + if v0 == gvar57 { + goto LABEL4 + } + if v0 == gvar58 { + goto LABEL5 + } + goto LABEL6 +LABEL1: + gvar62 = gvar55 + goto LABEL6 +LABEL2: + gvar62 = gvar56 + goto LABEL6 +LABEL3: + goto LABEL6 +LABEL4: + flag53 = true + flag66 = true + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.CancelDialog(obj4) + ns.GiveXp(ns.GetHost(), 1000) + ns.Pickup(ns.GetHost(), obj5) + ns.PrintToAll("GeneralPrint:FindSpell") + ns.CreatureFollow(obj4, ns.GetHost()) + ns.AggressionLevel(obj4, 0.5) + ns.SetOwner(ns.GetHost(), obj4) + ns.BecomePet(obj4) + goto LABEL6 +LABEL5: + goto LABEL6 +LABEL6: + return +} +func WispInitialize() { + obj76[0] = ns.Object("Wisp2") + gvar78[0] = gvar68 + wp77[0] = ns.Waypoint("Wisp2Dest") + obj76[1] = ns.Object("Wisp3") + gvar78[1] = gvar68 + wp77[1] = ns.Waypoint("Wisp3Dest") +} +func MapInitialize() { + obj4 = ns.Object("Aidan") + obj5 = ns.Object("ConfuseBook") + obj6 = ns.Object("DeadPrisoner") + obj7 = ns.Object("Mystic_Brotherhood") + obj8 = ns.Object("OgreCageDoor01") + obj9 = ns.Object("CheckRescueTrigger") + obj10 = ns.Object("PitElev02") + obj11 = ns.Object("PitElev03") + obj12 = ns.Object("CryptTrigger01") + obj13 = ns.Object("CryptEnd1") + obj14 = ns.Object("CryptDoor3") + obj15 = ns.Object("CryptDoor4") + obj16 = ns.Object("CryptGuardian") + obj17 = ns.Object("UrchinCageDoor") + obj18 = ns.Object("UrchinShaman") + obj19 = ns.Object("Urchin1") + obj20 = ns.Object("Urchin2") + obj21 = ns.Object("Urchin3") + obj22 = ns.Object("Urchin4") + obj23 = ns.Object("Necromancer") + obj24 = ns.Object("OgreDude") + gvar37 = ns.WallGroup("Surprise02Walls") + gvar38 = ns.WallGroup("Surprise02DestWalls") + gvar39 = ns.WallGroup("GraveyardTrapWalls") + gvar40 = ns.WallGroup("GraveyardTrapWalls2") + gvar41 = ns.WallGroup("CryptWall01") + gvar42 = ns.WallGroup("SubGraveyardWalls") + gvar25 = ns.ObjectGroup("GraveyardTrapEnemies") + gvar26 = ns.ObjectGroup("TriggerGroup01") + gvar27 = ns.ObjectGroup("TriggerGroup02") + gvar28 = ns.ObjectGroup("SubGraveyardTriggers") + gvar29 = ns.ObjectGroup("SubGraveyardCreatures") + gvar30 = ns.ObjectGroup("CryptGuardianTriggers") + gvar31 = ns.ObjectGroup("CryptWarriorTriggers") + gvar32 = ns.ObjectGroup("UrchinPrisoners") + gvar33 = ns.ObjectGroup("Secret03Enemies") + gvar34 = ns.ObjectGroup("Secret03Triggers") + gvar35 = ns.ObjectGroup("Secret04Triggers") + gvar36 = ns.ObjectGroup("Secret06Triggers") + wp45[0] = ns.Waypoint("CreateWP1") + wp45[1] = ns.Waypoint("CreateWP2") + wp45[2] = ns.Waypoint("CreateWP3") + wp45[3] = ns.Waypoint("CreateWP4") + wp45[4] = ns.Waypoint("CreateWP5") + wp45[5] = ns.Waypoint("CreateWP6") + wp45[6] = ns.Waypoint("CreateWP7") + wp45[7] = ns.Waypoint("CreateWP8") + wp45[8] = ns.Waypoint("CreateWP9") + wp43 = ns.Waypoint("VileZombieCreateWP01") + wp44 = ns.Waypoint("GhostCreateWP01") + wp49 = ns.Waypoint("FaceHereWP") + wp46[0] = ns.Waypoint("TeleWP1") + wp46[1] = ns.Waypoint("TeleWP2") + wp46[2] = ns.Waypoint("TeleWP3") + wp47 = ns.Waypoint("CryptGuardianEntrance") + wp48 = ns.Waypoint("CryptWarriorEntrance") + wp50 = ns.Waypoint("AidanWait") + wp51 = ns.Waypoint("AidanLook") + wp52 = ns.Waypoint("PlayerSounds") + ns.LockDoor(obj17) + ns.UnBlind() + WispInitialize() + ns.StoryPic(obj4, "AidanPic") + ns.SetDialog(obj4, ns.NORMAL, AidanDialogStart, AidanDialogEnd) + ns.SetOwner(obj24, obj4) + ns.Damage(obj6, 0, 50, 8) +} +func AidanRescued() { + ns.ObjectOff(obj9) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + gvar62 = gvar57 + ns.StartDialog(obj4, ns.GetHost()) +} +func PlayOgre() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(7, 100) +LABEL1: + return +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func AidanNearPlayer() { + if !(flag53 == false && ns.IsCaller(ns.GetHost())) { + goto LABEL1 + } + ns.Chat(obj4, "War09a:AidanPlea") + if flag65 { + goto LABEL1 + } + ns.ClearOwner(obj4) + ns.SetOwner(ns.GetHost(), obj4) + flag65 = true +LABEL1: + return +} +func CheckRescue() { + if ns.IsLocked(obj8) { + goto LABEL1 + } + if !(ns.CurrentHealth(obj4) > 0) { + goto LABEL1 + } + AidanRescued() +LABEL1: + return +} +func AidanMustGo() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + PlayOgre() +LABEL1: + if !(ns.IsCaller(ns.GetHost()) && flag64 == false) { + goto LABEL2 + } + flag64 = true + ns.GiveXp(ns.GetHost(), 500) + ns.JournalEdit(ns.GetHost(), "FindOutpost", 4) + ns.JournalEntry(ns.GetHost(), "FindLOTD", 2) + ns.PrintToAll("Con01a:NewJournalEntry") +LABEL2: + if !(ns.IsCaller(ns.GetHost()) && flag66 == true && ns.CurrentHealth(obj4) > 0 && flag67 == false) { + goto LABEL3 + } + flag67 = true + ns.RestoreHealth(obj4, 120) + ns.SetDialog(obj4, ns.NORMAL, AidanDialogStart, AidanDialogEnd) + gvar62 = gvar58 + ns.CreatureGuard(obj4, ns.GetWaypointX(wp50), ns.GetWaypointY(wp50), ns.GetWaypointX(wp51), ns.GetWaypointY(wp51), 0) + ns.BecomeEnemy(obj4) + ns.SetOwner(ns.GetHost(), obj4) +LABEL3: + return +} +func DestroyAidan() { + if !flag67 { + goto LABEL1 + } + ns.Delete(obj4) +LABEL1: + return +} +func Secret03Declare() { + ns.ObjectGroupOff(gvar34) + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp52) + ns.ObjectGroupOn(gvar33) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 5) +} +func Secret04Declare() { + ns.ObjectGroupOff(gvar35) + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp52) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +} +func Secret05Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp52) + ns.GiveXp(ns.GetHost(), 100) +} +func Secret06Declare() { + ns.ObjectGroupOff(gvar36) + ns.MoveWaypoint(wp52, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp52) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 50) +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func EnablePitElev02() { + ns.ObjectOn(obj10) +} +func EnablePitElev03() { + ns.ObjectOn(obj11) +} +func GraveyardCreateOrders() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + ) + v0 = ns.GetWaypointX(wp43) + v1 = ns.GetWaypointY(wp43) + v2 = ns.GetWaypointX(wp44) + v3 = ns.GetWaypointY(wp44) + v4 = ns.GetWaypointX(wp49) + v5 = ns.GetWaypointY(wp49) + ns.LookWithAngle(obj60, 224) + ns.LookWithAngle(obj61, 192) + ns.CreatureGuard(obj60, v0, v1, v4, v5, 500) + ns.CreatureGuard(obj61, v2, v3, v4, v5, 500) +} +func GraveyardTrapTrigger() { + ns.ObjectGroupOff(gvar26) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar39) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar40) + ns.ObjectGroupOn(gvar25) + obj60 = ns.CreateObject("VileZombie", wp43) + obj61 = ns.CreateObject("Ghost", wp44) + ns.FrameTimer(1, GraveyardCreateOrders) +} +func SubGraveSurprise() { + ns.ObjectGroupOff(gvar28) + ns.ObjectGroupOn(gvar29) + ns.WallGroupBreak(gvar42) +} +func CryptGuardian() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp47) + v1 = ns.GetWaypointY(wp47) + ns.ObjectGroupOff(gvar30) + ns.LockDoor(obj14) + ns.LockDoor(obj15) + ns.ObjectOn(obj16) + ns.Enchant(obj16, ns.ENCHANT_INVISIBLE, 2) + ns.MoveObject(obj16, v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func TurnInvisible() { + ns.Enchant(obj16, ns.ENCHANT_INVISIBLE, 1.5) +} +func UnlockCryptDoors2() { + ns.UnlockDoor(obj14) + ns.UnlockDoor(obj15) +} +func CreatureOrders() { + var v0 int + v0 = 0 + for { + if !(v0 < 9) { + goto LABEL1 + } + ns.SetRoamFlag(obj59[v0], 1) + ns.Wander(obj59[v0]) + ns.AggressionLevel(obj59[v0], 0.83) + v0 += 1 + } +LABEL1: + return +} +func CreateZombies01() { + var v0 int + ns.ObjectGroupOff(gvar27) + ns.ObjectOn(obj23) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar37) + ns.NoWallSound(false) + ns.WallGroupBreak(gvar38) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + obj59[v0] = ns.CreateObject("Zombie", wp45[v0]) + v0 += 1 + } +LABEL1: + v0 = 5 + for { + if !(v0 < 7) { + goto LABEL3 + } + obj59[v0] = ns.CreateObject("Ghost", wp45[v0]) + v0 += 1 + } +LABEL3: + v0 = 7 + for { + if !(v0 < 9) { + goto LABEL5 + } + obj59[v0] = ns.CreateObject("VileZombie", wp45[v0]) + v0 += 1 + } +LABEL5: + ns.FrameTimer(1, CreatureOrders) +} +func NecroTeleport() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 2) + v0 = ns.GetWaypointX(wp46[v2]) + v1 = ns.GetWaypointY(wp46[v2]) + if !ns.IsCaller(obj23) { + goto LABEL1 + } + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(obj23, v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +LABEL1: + return +} +func NecroTeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 2) + v0 = ns.GetWaypointX(wp46[v2]) + v1 = ns.GetWaypointY(wp46[v2]) + ns.PauseObject(ns.GetTrigger(), 15) + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func FreeUrchins01() { + ns.UnlockDoor(obj17) + if flag63 { + goto LABEL1 + } + flag63 = true + ns.SetOwner(ns.GetHost(), obj19) + ns.SetOwner(ns.GetHost(), obj20) + ns.SetOwner(ns.GetHost(), obj21) + ns.SetOwner(ns.GetHost(), obj22) + ns.SetOwner(ns.GetHost(), obj18) + ns.SetRoamFlag(obj18, 1) + ns.SetRoamFlag(obj19, 1) + ns.SetRoamFlag(obj20, 1) + ns.SetRoamFlag(obj21, 1) + ns.SetRoamFlag(obj22, 1) + ns.AggressionLevel(obj18, 0.83) + ns.AggressionLevel(obj19, 0.83) + ns.AggressionLevel(obj20, 0.83) + ns.AggressionLevel(obj21, 0.83) + ns.AggressionLevel(obj22, 0.83) +LABEL1: + return +} +func LockUrchinCage() { + ns.LockDoor(obj17) +} +func HurtUrchins01() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.RunAway(ns.GetTrigger(), ns.GetCaller(), 120) +LABEL1: + return +} +func MapEntry() { + ns.NoWallSound(false) +} +func whichWisp(a1 ns.ObjectID) int { + var v0 int + v0 = 0 + for { + if !(v0 < ivar75) { + goto LABEL1 + } + if obj76[v0] != a1 { + goto LABEL2 + } + return v0 + LABEL2: + v0 += 1 + } +LABEL1: + return -1 + return 1 +} +func WispAction(a1 int) { + var ( + v0 float32 + v1 int + ) + v1 = gvar78[a1] + if v1 == gvar69 { + goto LABEL1 + } + if v1 == gvar71 { + goto LABEL2 + } + if v1 == gvar70 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.Distance(ns.GetObjectX(obj76[a1]), ns.GetObjectY(obj76[a1]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v0 < 70) { + goto LABEL5 + } + gvar78[a1] = gvar70 + ns.Move(obj76[a1], wp77[a1]) +LABEL5: + goto LABEL4 +LABEL2: + ns.LookAtObject(obj76[a1], ns.GetHost()) + ivar79[a1] += 1 + if !(ivar79[a1] > 4) { + goto LABEL6 + } + gvar78[a1] = gvar69 + ns.CreatureFollow(obj76[a1], ns.GetHost()) +LABEL6: + goto LABEL4 +LABEL3: + v0 = ns.Distance(ns.GetObjectX(obj76[a1]), ns.GetObjectY(obj76[a1]), ns.GetWaypointX(wp77[a1]), ns.GetWaypointY(wp77[a1])) + if !(v0 < 30) { + goto LABEL7 + } + gvar78[a1] = gvar72 + ns.CreatureIdle(obj76[a1]) + return +LABEL7: + goto LABEL4 +LABEL4: + ns.FrameTimerWithArg(ivar74, a1, WispAction) +} +func WispRecognize() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar78[v0] + if v1 == gvar68 { + goto LABEL3 + } + if v1 == gvar71 { + goto LABEL4 + } + goto LABEL5 +LABEL3: + gvar78[v0] = gvar69 + ns.CreatureFollow(ns.GetTrigger(), ns.GetCaller()) + gvar80[v0] = ns.FrameTimerWithArg(ivar74, v0, WispAction) + goto LABEL5 +LABEL4: + gvar78[v0] = gvar70 + ns.Move(ns.GetTrigger(), wp77[v0]) + goto LABEL5 +LABEL5: + return +} +func WispLoseSight() { + var ( + v0 int + v1 int + ) + if ns.HasClass(ns.GetCaller(), ns.PLAYER) { + goto LABEL1 + } + return +LABEL1: + v0 = whichWisp(ns.GetTrigger()) + if !(v0 < 0) { + goto LABEL2 + } + return +LABEL2: + v1 = gvar78[v0] + if v1 == gvar70 { + goto LABEL3 + } + goto LABEL4 +LABEL3: + gvar78[v0] = gvar71 + ivar79[v0] = 0 + ns.CreatureIdle(ns.GetTrigger()) + goto LABEL4 +LABEL4: + return +} +func WispGetMad() { + var v0 int + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) + v0 = whichWisp(ns.GetTrigger()) + if !(v0 >= 0) { + goto LABEL1 + } + gvar78[v0] = gvar73 + ns.CancelTimer(gvar80[v0]) +LABEL1: + return +} +func WispMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func PlaySwamp() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(29, 100) +LABEL1: + return +} +func PlaySwamp2() { + ns.Music(29, 100) +} +func PlayAction() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(26, 100) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz09c/dummy_test.go b/examples/wiz09c/dummy_test.go new file mode 100644 index 0000000..adb22f5 --- /dev/null +++ b/examples/wiz09c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz09c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz09c/wiz09c.go b/examples/wiz09c/wiz09c.go new file mode 100644 index 0000000..58b51b1 --- /dev/null +++ b/examples/wiz09c/wiz09c.go @@ -0,0 +1,567 @@ +package wiz09c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + obj49 ns.ObjectID + obj50 ns.ObjectID + obj51 ns.ObjectID + obj52 ns.ObjectID + obj53 ns.ObjectID + obj54 ns.ObjectID + gvar55 ns.ObjectGroupID + gvar56 ns.ObjectGroupID + gvar57 ns.ObjectGroupID + gvar58 ns.ObjectGroupID + gvar59 ns.ObjectGroupID + gvar60 ns.ObjectGroupID + gvar61 ns.ObjectGroupID + gvar62 ns.ObjectGroupID + gvar63 ns.ObjectGroupID + gvar64 ns.ObjectGroupID + gvar65 ns.ObjectGroupID + gvar66 [6]ns.ObjectGroupID + gvar67 ns.ObjectGroupID + gvar68 ns.ObjectGroupID + gvar69 ns.WallGroupID + gvar70 ns.WallGroupID + gvar71 ns.WallGroupID + gvar72 ns.WallGroupID + gvar73 ns.WallGroupID + gvar74 ns.WallGroupID + wp75 ns.WaypointID + wp76 ns.WaypointID + wp77 ns.WaypointID + wp78 ns.WaypointID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + wp82 ns.WaypointID + wp83 ns.WaypointID + wp84 ns.WaypointID + wp85 ns.WaypointID + wp86 ns.WaypointID + wp87 ns.WaypointID + wp88 ns.WaypointID + wp89 ns.WaypointID + wp90 ns.WaypointID + wp91 ns.WaypointID + wp92 ns.WaypointID + wp93 ns.WaypointID + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + wp97 ns.WaypointID + flag98 bool + flag99 bool + ivar100 int + ivar101 int + gvar102 int + gvar103 int + ivar104 int + gvar105 int + obj106 ns.ObjectID +) + +func init() { + flag99 = true + ivar100 = 22 + ivar101 = ivar100 + ivar104 = 0 + gvar105 = 0 + flag98 = true +} +func ToggleSpikes1() { + ns.ObjectGroupToggle(gvar61) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP01")) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP06")) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP09")) + ns.FrameTimer(60, ToggleSpikes2) +} +func ToggleSpikes2() { + ns.ObjectGroupToggle(gvar62) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP04")) + ns.AudioEvent(ns.FloorSpikesUp, ns.Waypoint("SpikeWP07")) + ns.AudioEvent(ns.FloorSpikesDown, ns.Waypoint("SpikeWP12")) + ns.FrameTimer(60, ToggleSpikes1) +} +func GoToPost() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp94) + v1 = ns.GetWaypointY(wp94) + v2 = ns.GetWaypointX(wp95) + v3 = ns.GetWaypointY(wp95) + ns.CreatureGuard(obj28, v0, v1, v2, v3, 100) +} +func SwitchSpikeState() { + ns.ObjectGroupOff(gvar66[ivar104]) + if !flag99 { + goto LABEL1 + } + ivar104 += 1 + if !(ivar104 > 5) { + goto LABEL2 + } + ivar104 = 0 +LABEL2: + ns.ObjectGroupOn(gvar66[ivar104]) + ns.AudioEvent(ns.FloorSpikesUp, wp97) + ns.FrameTimer(30, SwitchSpikeState) + goto LABEL3 +LABEL1: + return +LABEL3: + return +} +func CloseWalls() { + ns.MusicPopEvent() + ns.WallGroupClose(gvar69) + ns.WallGroupClose(gvar70) +} +func PlayAction() { + ns.MusicPushEvent() + ns.Music(26, 100) +} +func PlayCaves() { + ns.Music(18, 100) +} +func MapEntry() { + PlayCaves() + ns.NoWallSound(false) +} +func Secret01Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 500) +} +func Secret01Exit() { + ns.WallGroupOpen(gvar71) +} +func Secret02Declare() { + ns.ObjectGroupOff(gvar68) + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 250) +} +func Secret03Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 50) +} +func Secret04Declare() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.MoveWaypoint(wp96, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp96) + ns.GiveXp(ns.GetHost(), 100) +} +func SpikeTimerAudioLoop() { + if flag98 { + goto LABEL1 + } + ns.AudioEvent(ns.Gear1, wp75) + ns.FrameTimer(ivar101, SpikeTimerAudioLoop) + ivar101 -= 1 + goto LABEL2 +LABEL1: + ns.AudioEvent(ns.TriggerPressed, wp75) +LABEL2: + return +} +func ResetOgreSpikeDoor01() { + ns.ObjectOn(obj4) + ns.ObjectOn(obj5) + ns.ObjectGroupOn(gvar55) + ns.LockDoor(obj6) + flag98 = true + ivar101 = ivar100 +} +func ToggleOgreTrapSpikes01() { + ns.ObjectOff(obj4) + ns.ObjectOff(obj5) + ns.ObjectGroupOff(gvar55) + if !flag98 { + goto LABEL1 + } + ns.UnlockDoor(obj6) + flag98 = false + SpikeTimerAudioLoop() + ns.FrameTimer(150, ResetOgreSpikeDoor01) + goto LABEL2 +LABEL1: + ns.LockDoor(obj6) + flag98 = true +LABEL2: + return +} +func MoveBlocks01() { + ns.ObjectGroupOff(gvar57) + ns.ObjectGroupOff(gvar58) + PlayAction() + ns.Move(obj7, wp76) + ns.Move(obj8, wp77) + ns.Move(obj9, wp78) + ns.Move(obj10, wp79) + ns.Move(obj11, wp80) + ns.Move(obj12, wp81) + ns.Move(obj13, wp82) + ns.Move(obj14, wp83) + ns.Move(obj15, wp84) + ns.Move(obj16, wp85) + ns.Move(obj17, wp86) + ns.Move(obj18, wp87) + ns.WallGroupOpen(gvar69) + ns.ObjectOn(obj21) + ns.Wander(obj21) +} +func CallNextOgre() { + ns.WallGroupOpen(gvar70) + ns.ObjectOn(obj22) + ns.Wander(obj22) +} +func MoveBlocks02() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp90) + v1 = ns.GetWaypointY(wp90) + ns.MoveObject(obj19, v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.AudioEvent(ns.KeyDrop, wp90) + ns.ObjectOn(obj20) + ns.Move(obj9, wp88) + ns.Move(obj10, wp89) + ns.Move(obj7, wp78) + ns.Move(obj8, wp79) + ns.FrameTimer(45, CloseWalls) +} +func OpenWayOut() { + ns.WallGroupOpen(gvar74) +} +func GetBuddy() { + ns.RetreatLevel(obj23, 0) + ns.Move(obj23, wp91) +} +func FollowOgrePatrol01() { + if !ns.IsCaller(obj23) { + goto LABEL1 + } + ns.CreatureFollow(ns.GetTrigger(), obj23) + ns.AggressionLevel(obj26, 0.83) + ns.AggressionLevel(obj27, 0.83) + ns.Walk(obj23, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) +LABEL1: + return +} +func WaitASec() { + ns.PauseObject(ns.GetTrigger(), 30) +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func SpikeHall() { + ns.ObjectGroupOff(gvar59) + ns.ObjectGroupOn(gvar60) + ToggleSpikes1() +} +func PressButton() { + ns.AudioEvent(ns.GruntRecognize, wp93) + ns.Move(obj28, wp92) + ns.AggressionLevel(obj29, 0.83) + ns.AggressionLevel(obj30, 0.83) + ns.AggressionLevel(obj31, 0.83) + ns.FrameTimer(60, GoToPost) +} +func OgrePressButton() { + ns.FrameTimer(10, PressButton) +} +func LockCageDoor() { + if ns.IsLocked(obj32) { + goto LABEL1 + } + ns.LockDoor(obj32) + goto LABEL2 +LABEL1: + ns.UnlockDoor(obj32) +LABEL2: + return +} +func FoundTreasureTrove() { + ns.PrintToAll("War09c:FoundTrove") + ns.GiveXp(ns.GetHost(), 1000) +} +func ToggleElevatorGroup3() { + ns.ObjectGroupToggle(gvar65) +} +func ToggleElevatorGroup1() { + ns.ObjectGroupToggle(gvar63) +} +func StartSpikes() { + ns.ObjectGroupOff(gvar67) + ns.LockDoor(obj33) + ns.FrameTimer(60, SwitchSpikeState) +} +func UnlockSpikeSegRoomDoor() { + ns.UnlockDoor(obj33) + flag99 = false +} +func CallSpitter1() { + ns.Wander(obj35) +} +func SetSpitter1PathColor() { + ns.SetRoamFlag(obj35, 1|128) +} +func LockPitDoor() { + ns.LockDoor(obj34) +} +func UnlockPitDoor() { + ns.UnlockDoor(obj34) +} +func ReleaseA() { + ns.UnlockDoor(obj36) + ns.UnlockDoor(obj37) + ns.CreatureHunt(obj48) +} +func ReleaseB() { + ns.UnlockDoor(obj38) + ns.UnlockDoor(obj39) + ns.CreatureHunt(obj49) +} +func ReleaseC() { + ns.UnlockDoor(obj40) + ns.UnlockDoor(obj41) + ns.CreatureHunt(obj50) +} +func ReleaseD() { + ns.UnlockDoor(obj42) + ns.UnlockDoor(obj43) + ns.CreatureHunt(obj51) +} +func ReleaseE() { + ns.UnlockDoor(obj44) + ns.UnlockDoor(obj45) + ns.CreatureHunt(obj52) +} +func ReleaseF() { + ns.UnlockDoor(obj46) + ns.UnlockDoor(obj47) + ns.CreatureHunt(obj53) +} +func ToggleElevatorGroup2() { + ns.ObjectOff(obj54) + ns.ObjectGroupToggle(gvar64) + ns.GiveXp(ns.GetHost(), 2500) +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func MapInitialize() { + obj6 = ns.Object("OgreSpikeDoor01") + obj4 = ns.Object("OgreTrapSpikePlate01") + obj5 = ns.Object("OgreTrapSpikeSwitch01") + obj7 = ns.Object("Block01") + obj8 = ns.Object("Block02") + obj9 = ns.Object("Block03") + obj10 = ns.Object("Block04") + obj11 = ns.Object("Block05") + obj12 = ns.Object("Block06") + obj13 = ns.Object("Block07") + obj14 = ns.Object("Block08") + obj15 = ns.Object("Block09") + obj16 = ns.Object("Block10") + obj17 = ns.Object("Block11") + obj18 = ns.Object("Block12") + obj19 = ns.Object("SilverKey") + obj20 = ns.Object("SilverKeyLight") + obj21 = ns.Object("OgreFighter01") + obj22 = ns.Object("OgreFighter02") + obj23 = ns.Object("OgrePatrol01") + obj24 = ns.Object("OgrePatrol02") + obj25 = ns.Object("OgrePatrol03") + obj26 = ns.Object("OgrePatrolBuddy01") + obj27 = ns.Object("OgrePatrolBuddy02") + obj28 = ns.Object("ButtonPresser") + obj29 = ns.Object("OgrePsycho01") + obj30 = ns.Object("OgrePsycho02") + obj31 = ns.Object("OgrePsycho03") + obj32 = ns.Object("CageDoor") + obj33 = ns.Object("SpikeSegRoomDoor") + obj34 = ns.Object("CrumblingPitDoor") + obj36 = ns.Object("CreaturePitDoorA1") + obj37 = ns.Object("CreaturePitDoorA2") + obj38 = ns.Object("CreaturePitDoorB1") + obj39 = ns.Object("CreaturePitDoorB2") + obj40 = ns.Object("CreaturePitDoorC1") + obj41 = ns.Object("CreaturePitDoorC2") + obj42 = ns.Object("CreaturePitDoorD1") + obj43 = ns.Object("CreaturePitDoorD2") + obj44 = ns.Object("CreaturePitDoorE1") + obj45 = ns.Object("CreaturePitDoorE2") + obj46 = ns.Object("CreaturePitDoorF1") + obj47 = ns.Object("CreaturePitDoorF2") + obj48 = ns.Object("CreatureA") + obj49 = ns.Object("CreatureB") + obj50 = ns.Object("CreatureC") + obj51 = ns.Object("CreatureD") + obj52 = ns.Object("CreatureE") + obj53 = ns.Object("CreatureF") + obj106 = ns.Object("CreaturePitElev") + obj54 = ns.Object("CreaturePitSwitch") + gvar55 = ns.ObjectGroup("OgreTrapSpikes01") + gvar57 = ns.ObjectGroup("BlockTrigger01") + gvar56 = ns.ObjectGroup("BlockMoverGroup01") + gvar58 = ns.ObjectGroup("SecretLight01") + gvar59 = ns.ObjectGroup("SpikeHallTriggers") + gvar60 = ns.ObjectGroup("SpikeMoverGroup") + gvar61 = ns.ObjectGroup("HallSpikes1") + gvar62 = ns.ObjectGroup("HallSpikes2") + gvar66[0] = ns.ObjectGroup("SpikeSeg01") + gvar66[1] = ns.ObjectGroup("SpikeSeg02") + gvar66[2] = ns.ObjectGroup("SpikeSeg03") + gvar66[3] = ns.ObjectGroup("SpikeSeg04") + gvar66[4] = ns.ObjectGroup("SpikeSeg05") + gvar66[5] = ns.ObjectGroup("SpikeSeg06") + gvar67 = ns.ObjectGroup("SpikeSegTriggers") + gvar68 = ns.ObjectGroup("Secret02Triggers") + gvar63 = ns.ObjectGroup("ElevatorGroup1") + gvar64 = ns.ObjectGroup("ElevatorGroup2") + gvar65 = ns.ObjectGroup("ElevatorGroup3") + gvar69 = ns.WallGroup("SecretWallGroup01") + gvar70 = ns.WallGroup("SecretWallGroup02") + gvar71 = ns.WallGroup("Secret01Wall") + gvar72 = ns.WallGroup("SecretHallWalls01") + gvar73 = ns.WallGroup("CreaturePitWalls") + gvar74 = ns.WallGroup("WayOut") + wp75 = ns.Waypoint("SpikeTimerAudioOrigin") + wp76 = ns.Waypoint("BlockWP01") + wp77 = ns.Waypoint("BlockWP02") + wp78 = ns.Waypoint("BlockWP03") + wp79 = ns.Waypoint("BlockWP04") + wp80 = ns.Waypoint("BlockWP05") + wp81 = ns.Waypoint("BlockWP06") + wp82 = ns.Waypoint("BlockWP07") + wp83 = ns.Waypoint("BlockWP08") + wp84 = ns.Waypoint("BlockWP09") + wp85 = ns.Waypoint("BlockWP10") + wp86 = ns.Waypoint("BlockWP11") + wp87 = ns.Waypoint("BlockWP12") + wp88 = ns.Waypoint("BlockWP13") + wp89 = ns.Waypoint("BlockWP14") + wp90 = ns.Waypoint("SilverKeySpot") + wp91 = ns.Waypoint("BuddyWP") + wp92 = ns.Waypoint("ButtonLocationWP") + wp93 = ns.Waypoint("OgreAudioOrigin") + wp94 = ns.Waypoint("PostWP") + wp95 = ns.Waypoint("FacingWP") + wp96 = ns.Waypoint("PlayerSounds") + wp97 = ns.Waypoint("RoomSounds") + ns.LockDoor(obj36) + ns.LockDoor(obj37) + ns.LockDoor(obj38) + ns.LockDoor(obj39) + ns.LockDoor(obj40) + ns.LockDoor(obj41) + ns.LockDoor(obj42) + ns.LockDoor(obj43) + ns.LockDoor(obj44) + ns.LockDoor(obj45) + ns.LockDoor(obj46) + ns.LockDoor(obj47) + ns.UnBlind() +} +func OnEvent(typ string) { + switch typ { + case "MapEntry": + MapEntry() + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/wiz09d/dummy_test.go b/examples/wiz09d/dummy_test.go new file mode 100644 index 0000000..e5b8eb8 --- /dev/null +++ b/examples/wiz09d/dummy_test.go @@ -0,0 +1,6 @@ +package wiz09d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz09d/wiz09d.go b/examples/wiz09d/wiz09d.go new file mode 100644 index 0000000..05b305c --- /dev/null +++ b/examples/wiz09d/wiz09d.go @@ -0,0 +1,854 @@ +package wiz09d + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + gvar21 ns.ObjectGroupID + gvar22 ns.ObjectGroupID + gvar23 ns.ObjectGroupID + gvar24 ns.ObjectGroupID + gvar25 ns.ObjectGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.WallGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 [5]ns.WaypointID + wp42 [5]ns.WaypointID + wp43 ns.WaypointID + gvar44 ns.WaypointGroupID + gvar45 int + gvar46 int + gvar47 int + gvar48 int + gvar49 int + obj50 ns.ObjectID + obj51 ns.ObjectID + ivar52 int + gvar53 int + gvar54 int + fvar55 float32 + fvar56 float32 + flag57 bool + flag58 bool + flag59 bool + flag60 bool + flag61 bool + flag62 bool + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + flag68 bool + flag69 bool + flag70 bool + flag71 bool + flag72 bool + flag73 bool +) + +func init() { + gvar45 = 0 + gvar46 = 1 + gvar47 = 2 + gvar48 = 3 + gvar49 = 4 + ivar52 = 1400 + gvar53 = gvar45 + gvar54 = gvar48 + flag57 = false + flag58 = false + flag59 = false + flag60 = false + flag61 = false + flag62 = false + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + flag68 = false + flag69 = false + flag70 = false + flag71 = false + flag72 = false + flag73 = false +} +func PlayerDeath() { + ns.DeathScreen(9) +} +func MapInitialize() { + obj4 = ns.Object("LoneWolf01") + obj5 = ns.Object("Skel01a") + obj6 = ns.Object("Skel02a") + obj7 = ns.Object("Skel03a") + obj8 = ns.Object("SquadLeader") + obj9 = ns.Object("Cain") + obj10 = ns.Object("Cain2") + obj11 = ns.Object("CainWolf01") + obj12 = ns.Object("CainWolf02") + obj13 = ns.Object("CainWolf03") + obj14 = ns.Object("Necromancer1") + obj15 = ns.Object("Necromancer2") + obj16 = ns.Object("Necromancer") + obj17 = ns.Object("NecroStart") + obj18 = ns.Object("Lich") + obj19 = ns.Object("KeepOutTrigger") + obj20 = ns.Object("TreasureLight") + gvar21 = ns.ObjectGroup("GoldTrapSpikes") + gvar22 = ns.ObjectGroup("WolfCaveTriggers") + gvar23 = ns.ObjectGroup("SkeletonSquad") + gvar25 = ns.ObjectGroup("NecroTriggers") + gvar24 = ns.ObjectGroup("ElevatorGroup1") + gvar26 = ns.ObjectGroup("SkeletonMarchTriggers") + gvar27 = ns.WallGroup("SecretHallWalls01") + gvar28 = ns.WallGroup("NecroWalls") + gvar29 = ns.WallGroup("NecroSafetyWalls") + wp30 = ns.Waypoint("NecroWP") + wp31 = ns.Waypoint("GoldTrapWP1") + wp32 = ns.Waypoint("GoldTrapWP2") + wp33 = ns.Waypoint("GoldTrapWP3") + wp34 = ns.Waypoint("GoldTrapWP4") + wp37 = ns.Waypoint("WolfCreateWP01") + wp38 = ns.Waypoint("WolfCreateWP02") + wp39 = ns.Waypoint("LoneWolf01DestWP") + wp40 = ns.Waypoint("Wolf01FacingWP") + wp35 = ns.Waypoint("WolfCreate01Dest") + wp36 = ns.Waypoint("WolfCreate02Dest") + wp41[0] = ns.Waypoint("TeleWP0") + wp41[1] = ns.Waypoint("TeleWP1") + wp41[2] = ns.Waypoint("TeleWP2") + wp41[3] = ns.Waypoint("TeleWP3") + wp41[4] = ns.Waypoint("TeleWP4") + wp42[0] = ns.Waypoint("WallSmokeWP0") + wp42[1] = ns.Waypoint("WallSmokeWP1") + wp42[2] = ns.Waypoint("WallSmokeWP2") + wp42[3] = ns.Waypoint("WallSmokeWP3") + wp42[4] = ns.Waypoint("WallSmokeWP4") + wp43 = ns.Waypoint("PlayerSounds") + gvar44 = ns.WaypointGroup("SearchNetwork1") + ns.StoryPic(obj9, "WoundedConjurerPic") + ns.StoryPic(obj10, "WoundedConjurerPic") + ns.StoryPic(obj16, "NecromancerPic") + ns.UnBlind() +} +func PlaySwamp() { + ns.Music(25, 100) +} +func PlayAction() { + ns.Music(26, 100) +} +func PlayAction2() { + ns.Music(28, 100) +} +func PlayMordwyn() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(21, 100) +LABEL1: + return +} +func PlayOgre() { + ns.Music(7, 100) +} +func PlayCaves() { + ns.Music(18, 100) +} +func PlayWasteland() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(19, 100) +LABEL1: + return +} +func Patrol() { + ns.Wander(ns.GetTrigger()) +} +func GoMedieval() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) +LABEL1: + return +} +func GoNormal() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) +} +func StopAndListen() { + var v0 int + v0 = ns.Random(1, 3) + if !(ns.IsCaller(ns.GetHost()) && v0 == 1) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 45) + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + if !ns.IsVisibleTo(ns.GetTrigger(), ns.GetCaller()) { + goto LABEL2 + } + ns.AggressionLevel(ns.GetTrigger(), 0.5) + goto LABEL1 +LABEL2: + ns.CreatureIdle(ns.GetTrigger()) +LABEL1: + return +} +func ReturnHome() { + ns.AggressionLevel(ns.GetTrigger(), 0.5) + ns.GoBackHome(ns.GetTrigger()) +} +func DisableGoldTrapSpikes() { + ns.ObjectGroupOff(gvar21) +} +func TriggerGoldTrapPoison() { + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp33), ns.GetWaypointY(wp33), 0, 0) + ns.CastSpellLocationLocation(ns.SPELL_TOXIC_CLOUD, ns.GetWaypointX(wp34), ns.GetWaypointY(wp34), 0, 0) +} +func TriggerGoldTrap() { + ns.ObjectGroupOn(gvar21) + ns.FrameTimer(20, TriggerGoldTrapPoison) +} +func ToggleElevatorGroup1() { + ns.ObjectGroupToggle(gvar24) +} +func DisableTL() { + ns.ObjectOff(obj20) +} +func WolfOrders() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + ) + v0 = ns.GetWaypointX(wp35) + v1 = ns.GetWaypointY(wp35) + v2 = ns.GetWaypointX(wp36) + v3 = ns.GetWaypointY(wp36) + v4 = ns.GetWaypointX(wp39) + v5 = ns.GetWaypointY(wp39) + ns.CreatureGuard(obj50, v0, v1, v4, v5, 350) + ns.CreatureGuard(obj51, v2, v3, v4, v5, 350) + ns.AggressionLevel(obj50, 0.83) + ns.AggressionLevel(obj51, 0.83) +} +func CainDialogStart() { + var v0 int + v0 = gvar53 + if v0 == gvar45 { + goto LABEL1 + } + if v0 == gvar46 { + goto LABEL2 + } + if v0 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainAsk") + flag57 = true + goto LABEL4 +LABEL2: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainHealed") + flag57 = true + goto LABEL4 +LABEL3: + ns.TellStory(ns.SwordsmanHurt, "War09c:CainEscort") + flag57 = true + goto LABEL4 +LABEL4: + return +} +func CainDialogEnd() { + var ( + v0 int + v1 ns.ObjectID + v2 int + ) + v2 = gvar53 + if v2 == gvar45 { + goto LABEL1 + } + if v2 == gvar46 { + goto LABEL2 + } + if v2 == gvar47 { + goto LABEL3 + } + goto LABEL4 +LABEL1: + v0 = ns.GetAnswer(obj9) + if v0 != 1 { + goto LABEL5 + } + v1 = ns.GetLastItem(ns.GetHost()) + for { + if v1 == 0 { + goto LABEL6 + } + if !(ns.HasClass(v1, ns.FOOD) && ns.HasSubclass(v1, ns.HEALTH_POTION)) { + goto LABEL7 + } + ns.Drop(ns.GetHost(), v1) + ns.Delete(v1) + fvar55 = ns.GetObjectX(obj9) + fvar56 = ns.GetObjectY(obj9) + CainRescue() + return + LABEL7: + v1 = ns.GetPreviousItem(v1) + } +LABEL6: + ns.PrintToAll("War09c:CainNoPotion") + goto LABEL9 +LABEL5: + ns.FrameTimer(1, CainPlea2) +LABEL9: + goto LABEL4 +LABEL2: + ns.CreatureFollow(obj10, ns.GetHost()) + ns.BecomePet(obj10) + ns.PrintToAll("War09c:SavedCain") + ns.GiveXp(ns.GetHost(), 2500) + ns.CancelDialog(obj10) + flag61 = true + gvar53 = gvar47 + goto LABEL4 +LABEL3: + goto LABEL4 +LABEL4: + return +} +func LichFight() { + ns.ObjectOn(obj18) + ns.Enchant(obj18, ns.ENCHANT_INVISIBLE, 3) + ns.MoveObject(obj18, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3])) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp41[3]), ns.GetWaypointY(wp41[3]), 0, 0) +} +func NecroTalk() { + if !ns.IsCaller(obj16) { + goto LABEL1 + } + ns.ObjectOff(obj17) + ns.SetDialog(obj16, ns.NORMAL, NecroDialogStart, NecroDialogEnd) + ns.StartDialog(obj16, ns.GetHost()) +LABEL1: + return +} +func MoveBody() { + ns.Delete(obj9) + ns.MoveObject(obj10, fvar55, fvar56) +} +func StartNecroFight2() { + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.Walk(obj16, ns.GetWaypointX(wp30), ns.GetWaypointY(wp30)) +} +func WolfHarass2() { + var ( + v0 int + v1 int + v2 int + ) + v0 = ns.Random(40, 65) + v1 = ns.Random(0, 2) + if ns.IsObjectOn(obj11) { + goto LABEL1 + } + ns.ObjectOn(obj11) + ns.ObjectOn(obj12) + ns.ObjectOn(obj13) +LABEL1: + v2 = v1 + if v2 == 0 { + goto LABEL2 + } + if v2 == 1 { + goto LABEL3 + } + if v2 == 2 { + goto LABEL4 + } + goto LABEL5 +LABEL2: + if !(flag58 == false && flag63 == false) { + goto LABEL6 + } + ns.HitLocation(obj11, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL7 +LABEL6: + v0 = 2 +LABEL7: + goto LABEL5 +LABEL3: + if !(flag59 == false && flag64 == false) { + goto LABEL8 + } + ns.HitLocation(obj12, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL9 +LABEL8: + v0 = 2 +LABEL9: + goto LABEL5 +LABEL4: + if !(flag60 == false && flag65 == false) { + goto LABEL10 + } + ns.HitLocation(obj13, ns.GetObjectX(obj9), ns.GetObjectY(obj9)) + goto LABEL11 +LABEL10: + v0 = 2 +LABEL11: + goto LABEL5 +LABEL5: + if !(flag63 == false || flag64 == false || flag65 == false) { + goto LABEL12 + } + ns.FrameTimer(v0, WolfHarass2) + goto LABEL13 +LABEL12: + return +LABEL13: + return +} +func CainPlea2() { + ns.Chat(obj9, "War09c:CainPlea2") +} +func MapEntry() { + ns.NoWallSound(false) +} +func KeepOut() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !r1 { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func KeepOut2() { + if flag69 { + goto LABEL1 + } + if !ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + return +} +func Secret01Declare() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 75) +} +func Secret02Declare() { + ns.ObjectOff(ns.GetTrigger()) + ns.MoveWaypoint(wp43, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.AudioEvent(ns.SecretFound, wp43) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 150) +} +func SkeletonMarch() { + ns.ObjectGroupOff(gvar26) + ns.ObjectGroupOn(gvar23) + ns.Wander(obj5) + ns.Wander(obj6) + ns.Wander(obj7) + ns.Wander(obj8) +} +func LoneWolf01Retreat() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp39) + v1 = ns.GetWaypointY(wp39) + v2 = ns.GetWaypointX(wp40) + v3 = ns.GetWaypointY(wp40) + ns.RetreatLevel(obj4, 0) + ns.CreatureGuard(obj4, v0, v1, v2, v3, 150) +} +func WolfAmbush() { + ns.ObjectGroupOff(gvar22) + obj50 = ns.CreateObject("BlackWolf", wp37) + obj51 = ns.CreateObject("BlackWolf", wp38) + ns.FrameTimer(1, WolfOrders) +} +func HomePatrol() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.GoBackHome(ns.GetTrigger()) + ns.PauseObject(ns.GetTrigger(), 120) + ns.Wander(ns.GetTrigger()) +} +func WolfGone() { + if !ns.IsTrigger(obj11) { + goto LABEL1 + } + flag58 = true + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL1 + } + ns.AggressionLevel(obj11, 0.5) +LABEL1: + if !ns.IsTrigger(obj12) { + goto LABEL2 + } + flag59 = true + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL2 + } + ns.AggressionLevel(obj12, 0.5) +LABEL2: + if !ns.IsTrigger(obj13) { + goto LABEL3 + } + flag60 = true + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL3 + } + ns.AggressionLevel(obj13, 0.5) +LABEL3: + if !(flag58 == true && flag59 == true && flag60 == true) { + goto LABEL4 + } + ns.DestroyChat(obj9) + flag57 = true + gvar54 = gvar49 + ns.SetDialog(obj9, ns.YESNO, CainDialogStart, CainDialogEnd) +LABEL4: + return +} +func CainPlea() { + var v0 int + if !(ns.IsCaller(ns.GetHost()) && ns.CurrentHealth(obj9) > 0) { + goto LABEL1 + } + v0 = gvar54 + if v0 == gvar48 { + goto LABEL2 + } + if v0 == gvar49 { + goto LABEL3 + } + goto LABEL1 +LABEL2: + ns.Chat(obj9, "War09c:CainPlea") + goto LABEL1 +LABEL3: + ns.Chat(obj9, "War09c:CainPlea2") + goto LABEL1 +LABEL1: + return +} +func WolfHarass() { + r1 := ns.IsAttackedBy(ns.GetCaller(), ns.GetHost()) + if !(r1 && flag61 == false) { + goto LABEL1 + } + ns.GoBackHome(ns.GetCaller()) +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + if !(flag61 == false && flag62 == false) { + goto LABEL2 + } + WolfHarass2() +LABEL2: + return +} +func WolvesTargetPlayer() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if flag58 { + goto LABEL2 + } + flag63 = true + ns.AggressionLevel(obj11, 0.5) + ns.Attack(obj11, ns.GetHost()) +LABEL2: + if flag59 { + goto LABEL3 + } + flag64 = true + ns.AggressionLevel(obj12, 0.5) + ns.Attack(obj12, ns.GetHost()) +LABEL3: + if flag60 { + goto LABEL1 + } + flag65 = true + ns.AggressionLevel(obj13, 0.5) + ns.Attack(obj13, ns.GetHost()) +LABEL1: + return +} +func CainDie() { + if !(ns.CurrentHealth(obj11) > 0) { + goto LABEL1 + } + ns.AggressionLevel(obj11, 0.83) +LABEL1: + if !(ns.CurrentHealth(obj12) > 0) { + goto LABEL2 + } + ns.AggressionLevel(obj12, 0.83) +LABEL2: + if !(ns.CurrentHealth(obj13) > 0) { + goto LABEL3 + } + ns.AggressionLevel(obj13, 0.83) +LABEL3: + fvar55 = ns.GetObjectX(obj9) + fvar56 = ns.GetObjectY(obj9) + flag62 = true + ns.ObjectOn(obj10) + ns.Damage(obj10, 0, 200000, 0) + ns.FrameTimer(1, MoveBody) +} +func CainRescue() { + ns.Delete(obj9) + ns.MoveObject(obj10, fvar55, fvar56) + ns.ObjectOn(obj10) + ns.CreatureGuard(obj10, fvar55, fvar56, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) + gvar53 = gvar46 + ns.SetDialog(obj10, ns.NORMAL, CainDialogStart, CainDialogEnd) + ns.LookAtObject(obj10, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj10) + ns.StartDialog(obj10, ns.GetHost()) +} +func NecroDialogStart() { + var ( + v0 int + v1 int + ) + v0 = ns.Random(1, 2) + v1 = v0 + if v1 == 1 { + goto LABEL1 + } + if v1 == 2 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + ns.LookAtObject(obj16, ns.GetHost()) + ns.LookAtObject(obj15, ns.GetHost()) + ns.LookAtObject(obj14, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj16) + ns.TellStory(ns.SwordsmanHurt, "Con09a:NecroThreat1") + goto LABEL3 +LABEL2: + ns.LookAtObject(obj16, ns.GetHost()) + ns.LookAtObject(obj15, ns.GetHost()) + ns.LookAtObject(obj14, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj16) + ns.TellStory(ns.SwordsmanHurt, "Con09a:NecroThreat4") + goto LABEL3 +LABEL3: + return +} +func NecroDialogEnd() { + ns.CancelDialog(obj16) + ns.AggressionLevel(obj14, 0.83) + ns.AggressionLevel(obj15, 0.83) + ns.AggressionLevel(obj16, 0.83) + ns.CreatureIdle(obj14) + ns.CreatureIdle(obj15) + ns.Frozen(ns.GetHost(), false) + ns.WideScreen(false) + ns.FrameTimer(ivar52, LichFight) +} +func StartNecroFight() { + var v0 int + ns.WayPointGroupOff(gvar44) + ns.ObjectOff(obj19) + ns.ObjectGroupOff(gvar25) + ns.ObjectOn(obj17) + ns.ObjectOn(obj14) + ns.ObjectOn(obj15) + ns.ObjectOn(obj16) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar29) + ns.NoWallSound(false) + ns.MusicPushEvent() + PlayAction2() + ns.WallGroupClose(gvar28) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp42[v0]), ns.GetWaypointY(wp42[v0]), 0, 0) + v0 += 1 + } +LABEL1: + ns.FrameTimer(1, StartNecroFight2) +} +func NecroTeleport() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp41[v2]) + v1 = ns.GetWaypointY(wp41[v2]) + if !(ns.IsCaller(obj14) || ns.IsCaller(obj15) || ns.IsCaller(obj16) || ns.IsCaller(obj18)) { + goto LABEL1 + } + ns.Enchant(ns.GetCaller(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller()), 0, 0) + ns.MoveObject(ns.GetCaller(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +LABEL1: + return +} +func NecroTeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp41[v2]) + v1 = ns.GetWaypointY(wp41[v2]) + if !(ns.IsTrigger(obj14) || ns.IsTrigger(obj15) || ns.IsTrigger(obj16)) { + goto LABEL1 + } + ns.PauseObject(ns.GetTrigger(), 15) +LABEL1: + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func OpenMagicWalls() { + var v0 int + if !ns.IsTrigger(obj14) { + goto LABEL1 + } + flag66 = true +LABEL1: + if !ns.IsTrigger(obj15) { + goto LABEL2 + } + flag67 = true +LABEL2: + if !ns.IsTrigger(obj16) { + goto LABEL3 + } + flag68 = true +LABEL3: + if !ns.IsTrigger(obj18) { + goto LABEL4 + } + flag69 = true +LABEL4: + if !(flag66 == true && flag67 == true && flag68 == true && flag69 == true) { + goto LABEL5 + } + ns.WallGroupOpen(gvar28) + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL6 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp42[v0]), ns.GetWaypointY(wp42[v0]), 0, 0) + v0 += 1 + } +LABEL6: + ns.WayPointGroupOn(gvar44) + ns.MusicPopEvent() +LABEL5: + return +} +func TeleportToPlayer() { + var ( + v0 int + v1 float32 + v2 float32 + v3 ns.WaypointID + ) + v2 = 1e+06 + v0 = 0 + for { + if !(v0 < 5) { + goto LABEL1 + } + v1 = ns.Distance(ns.GetWaypointX(wp41[v0]), ns.GetWaypointY(wp41[v0]), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + if !(v1 < v2) { + goto LABEL2 + } + v2 = v1 + v3 = wp41[v0] + LABEL2: + v0 += 1 + } +LABEL1: + ns.Enchant(obj18, ns.ENCHANT_INVISIBLE, 1) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(obj18), ns.GetObjectY(obj18), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj18), ns.GetObjectY(obj18), 0, 0) + ns.MoveObject(obj18, ns.GetWaypointX(v3), ns.GetWaypointY(v3)) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(v3), ns.GetWaypointY(v3), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(v3), ns.GetWaypointY(v3), 0, 0) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + case "MapEntry": + MapEntry() + } +} diff --git a/examples/wiz10a/dummy_test.go b/examples/wiz10a/dummy_test.go new file mode 100644 index 0000000..fed8186 --- /dev/null +++ b/examples/wiz10a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz10a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz10a/wiz10a.go b/examples/wiz10a/wiz10a.go new file mode 100644 index 0000000..35af324 --- /dev/null +++ b/examples/wiz10a/wiz10a.go @@ -0,0 +1,824 @@ +package wiz10a + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + obj40 ns.ObjectID + obj41 ns.ObjectID + obj42 ns.ObjectID + obj43 ns.ObjectID + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + gvar48 ns.ObjectGroupID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + wp59 ns.WaypointID + wp60 ns.WaypointID + wp61 ns.WaypointID + gvar62 ns.WallGroupID + gvar63 ns.WallGroupID + gvar64 ns.WallGroupID + gvar65 ns.ObjectGroupID + gvar66 ns.ObjectGroupID + gvar67 ns.ObjectGroupID + gvar68 ns.ObjectGroupID + gvar69 ns.ObjectGroupID + gvar70 ns.ObjectGroupID + flag71 bool + flag72 bool + flag73 bool + flag74 bool + gvar75 ns.WallGroupID + gvar76 ns.WallGroupID + gvar77 ns.WallGroupID + gvar78 ns.ObjectGroupID + obj79 ns.ObjectID + obj80 ns.ObjectID + gvar81 ns.WallGroupID + flag82 bool + flag83 bool + wp84 ns.WaypointID + wp85 ns.WaypointID + obj86 ns.ObjectID + obj87 ns.ObjectID + wp88 ns.WaypointID + wp89 ns.WaypointID + obj90 ns.ObjectID + gvar91 ns.WallGroupID + gvar92 ns.WallGroupID + gvar93 ns.ObjectGroupID + gvar94 ns.ObjectGroupID + gvar95 ns.ObjectGroupID + gvar96 ns.ObjectGroupID + gvar97 ns.ObjectGroupID + gvar98 ns.ObjectGroupID + wp99 ns.WaypointID + wp100 ns.WaypointID + wp101 ns.WaypointID + wp102 ns.WaypointID + wp103 ns.WaypointID + wp104 ns.WaypointID + obj105 ns.ObjectID + obj106 ns.ObjectID + wp107 ns.WaypointID + gvar108 ns.ObjectGroupID + obj109 ns.ObjectID + obj110 ns.ObjectID + gvar111 int + wp112 ns.WaypointID + wp113 ns.WaypointID + gvar114 ns.WallGroupID + gvar115 ns.WallGroupID + gvar116 ns.ObjectGroupID + gvar117 ns.WallGroupID + gvar118 ns.WallGroupID + wp119 ns.WaypointID + obj120 ns.ObjectID + obj121 ns.ObjectID + obj122 ns.ObjectID + wp123 ns.WaypointID + wp124 ns.WaypointID + fvar125 float32 + fvar126 float32 + flag127 bool + flag128 bool +) + +func init() { + flag71 = false + flag72 = false + flag73 = false + flag74 = false + flag83 = false + flag82 = false + flag127 = false + flag128 = false +} +func DisableArrow01() { + ns.ObjectOff(obj4) +} +func EnableArrow01() { + ns.ObjectOn(obj4) + ns.FrameTimer(1, DisableArrow01) +} +func DisableArrow02() { + ns.ObjectOff(obj5) +} +func EnableArrow02() { + ns.ObjectOn(obj5) + ns.FrameTimer(1, DisableArrow02) +} +func DisableArrow03() { + ns.ObjectOff(obj6) +} +func EnableArrow03() { + ns.ObjectOn(obj6) + ns.FrameTimer(1, DisableArrow03) +} +func DisableArrow04() { + ns.ObjectOff(obj7) +} +func EnableArrow04() { + ns.ObjectOn(obj7) + ns.FrameTimer(1, DisableArrow04) +} +func DisableArrow05() { + ns.ObjectOff(obj8) +} +func EnableArrow05() { + ns.ObjectOn(obj8) + ns.FrameTimer(1, DisableArrow05) +} +func DisableArrow06() { + ns.ObjectOff(obj9) +} +func EnableArrow06() { + ns.ObjectOn(obj9) + ns.FrameTimer(1, DisableArrow06) +} +func DisableArrow07() { + ns.ObjectOff(obj10) +} +func EnableArrow07() { + ns.ObjectOn(obj10) + ns.FrameTimer(1, DisableArrow07) +} +func DisableArrow08() { + ns.ObjectOff(obj11) +} +func EnableArrow08() { + ns.ObjectOn(obj11) + ns.FrameTimer(1, DisableArrow08) +} +func DisableArrow09() { + ns.ObjectOff(obj12) +} +func EnableArrow09() { + ns.ObjectOn(obj12) + ns.FrameTimer(1, DisableArrow09) +} +func DisableArrow10() { + ns.ObjectOff(obj13) +} +func EnableArrow10() { + ns.ObjectOn(obj13) + ns.FrameTimer(1, DisableArrow10) +} +func DisableArrow11() { + ns.ObjectOff(obj14) +} +func EnableArrow11() { + ns.ObjectOn(obj14) + ns.FrameTimer(1, DisableArrow11) +} +func DisableArrow12() { + ns.ObjectOff(obj15) +} +func EnableArrow12() { + ns.ObjectOn(obj15) + ns.FrameTimer(1, DisableArrow12) +} +func DisableArrow13() { + ns.ObjectOff(obj16) +} +func EnableArrow13() { + ns.ObjectOn(obj16) + ns.FrameTimer(1, DisableArrow13) +} +func DisableArrow14() { + ns.ObjectOff(obj17) +} +func EnableArrow14() { + ns.ObjectOn(obj17) + ns.FrameTimer(1, DisableArrow14) +} +func DisableArrow15() { + ns.ObjectOff(obj18) +} +func EnableArrow15() { + ns.ObjectOn(obj18) + ns.FrameTimer(1, DisableArrow15) +} +func DisableArrow25() { + ns.ObjectOff(obj28) +} +func EnableArrow25() { + ns.ObjectOn(obj28) + ns.FrameTimer(1, DisableArrow25) +} +func DisableArrow26() { + ns.ObjectOff(obj29) +} +func EnableArrow26() { + ns.ObjectOn(obj29) + ns.FrameTimer(1, DisableArrow26) +} +func DisableArrow27() { + ns.ObjectOff(obj30) +} +func EnableArrow27() { + ns.ObjectOn(obj30) + ns.FrameTimer(1, DisableArrow27) +} +func DisableArrow28() { + ns.ObjectOff(obj31) +} +func EnableArrow28() { + ns.ObjectOn(obj31) + ns.FrameTimer(1, DisableArrow28) +} +func DisableArrow29() { + ns.ObjectOff(obj32) +} +func EnableArrow29() { + ns.ObjectOn(obj32) + ns.FrameTimer(1, DisableArrow29) +} +func DisableArrow30() { + ns.ObjectOff(obj33) +} +func EnableArrow30() { + ns.ObjectOn(obj33) + ns.FrameTimer(1, DisableArrow30) +} +func DisableArrow31() { + ns.ObjectOff(obj34) +} +func EnableArrow31() { + ns.ObjectOn(obj34) + ns.FrameTimer(1, DisableArrow31) +} +func DisableArrow32() { + ns.ObjectOff(obj35) +} +func EnableArrow32() { + ns.ObjectOn(obj35) + ns.FrameTimer(1, DisableArrow32) +} +func DisableArrow33() { + ns.ObjectOff(obj36) +} +func EnableArrow33() { + ns.ObjectOn(obj36) + ns.FrameTimer(1, DisableArrow33) +} +func DisableArrow34() { + ns.ObjectOff(obj37) +} +func EnableArrow34() { + ns.ObjectOn(obj37) + ns.FrameTimer(1, DisableArrow34) +} +func DisableArrow35() { + ns.ObjectOff(obj38) +} +func EnableArrow35() { + ns.ObjectOn(obj38) + ns.FrameTimer(1, DisableArrow35) +} +func DisableArrow36() { + ns.ObjectOff(obj39) +} +func EnableArrow36() { + ns.ObjectOn(obj39) + ns.FrameTimer(1, DisableArrow36) +} +func DisableArrow37() { + ns.ObjectOff(obj40) +} +func EnableArrow37() { + ns.ObjectOn(obj40) + ns.FrameTimer(1, DisableArrow37) +} +func DisableArrow38() { + ns.ObjectOff(obj41) +} +func EnableArrow38() { + ns.ObjectOn(obj41) + ns.FrameTimer(1, DisableArrow38) +} +func DisableArrowGroup1() { + ns.ObjectOff(obj19) + ns.ObjectOff(obj20) + ns.ObjectOff(obj21) + ns.ObjectOff(obj22) +} +func EnableArrowGroup1() { + ns.ObjectOn(obj19) + ns.ObjectOn(obj20) + ns.ObjectOn(obj21) + ns.ObjectOn(obj22) + ns.FrameTimer(2, DisableArrowGroup1) +} +func DisableArrowGroup2() { + ns.ObjectOff(obj24) + ns.ObjectOff(obj25) + ns.ObjectOff(obj26) + ns.ObjectOff(obj27) +} +func EnableArrowGroup2() { + ns.ObjectOn(obj24) + ns.ObjectOn(obj25) + ns.ObjectOn(obj26) + ns.ObjectOn(obj27) + ns.FrameTimer(2, DisableArrowGroup2) +} +func Blocks2MoveBack() { + ns.Move(obj45, wp55) + ns.Move(obj46, wp56) + ns.Move(obj47, wp57) + ns.AudioEvent(ns.SpikeBlockMove, wp52) +} +func Blocks2Move() { + ns.ObjectGroupOff(gvar48) + ns.Move(obj45, wp52) + ns.Move(obj46, wp53) + ns.Move(obj47, wp54) + ns.AudioEvent(ns.SpikeBlockMove, wp55) +} +func OpenBlockWallGroup1() { + ns.WallGroupOpen(gvar62) +} +func OpenBlockWallGroup2() { + ns.WallGroupOpen(gvar63) +} +func OpenBlockWallGroup3() { + ns.WallGroupOpen(gvar64) +} +func FilterBlock5() int { + if !ns.IsCaller(obj46) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func EnableSpikeGroup1() { + ns.ObjectGroupOn(gvar78) + ns.AudioEvent(ns.FloorSpikesUp, wp53) +} +func UnlockSpikeDoor() { + ns.UnlockDoor(obj79) +} +func LockSpikeDoor() { + ns.LockDoor(obj79) +} +func SkelGroup1Hostilize() { + ns.GroupAggressionLevel(gvar65, 0.83) +} +func SkelGroup2Hostilize() { + ns.GroupAggressionLevel(gvar66, 0.83) +} +func SkelGroup3Hostilize() { + ns.GroupAggressionLevel(gvar67, 0.83) +} +func SkelGroup4Hostilize() { + ns.GroupAggressionLevel(gvar68, 0.83) +} +func SkelGroup5Hostilize() { + ns.GroupAggressionLevel(gvar69, 0.83) +} +func SkelGroup6Hostilize() { + ns.GroupAggressionLevel(gvar70, 0.83) +} +func OpenSecretWallGroup1() { + ns.WallGroupOpen(gvar75) +} +func OpenSecretWallGroup2() { + ns.WallGroupOpen(gvar76) +} +func OpenSecretWallGroup3() { + ns.WallGroupOpen(gvar77) +} +func Blocks1Move() { + ns.Move(obj42, wp49) + ns.Move(obj43, wp50) + ns.Move(obj44, wp51) + ns.AudioEvent(ns.SpikeBlockMove, wp58) + ns.AudioEvent(ns.SpikeBlockMove, wp60) + ns.AudioEvent(ns.SpikeBlockMove, wp61) +} +func Lever1Check() { + ns.WallGroupOpen(gvar63) + if flag71 { + goto LABEL1 + } + flag71 = true + ns.AudioEvent(ns.Gear3, wp61) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag71 == true && flag72 == true) { + goto LABEL2 + } + Blocks1Move() +LABEL2: + return +} +func Lever2Check() { + ns.WallGroupOpen(gvar62) + if flag72 { + goto LABEL1 + } + flag72 = true + ns.AudioEvent(ns.Gear3, wp60) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag71 == true && flag72 == true) { + goto LABEL2 + } + Blocks1Move() +LABEL2: + return +} +func Lever3Check() { + if flag73 { + goto LABEL1 + } + flag73 = true + ns.AudioEvent(ns.Gear3, wp59) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag73 == true && flag74 == true) { + goto LABEL2 + } + OpenSecretWallGroup3() + ns.ObjectOn(obj80) +LABEL2: + return +} +func Lever4Check() { + if flag74 { + goto LABEL1 + } + flag74 = true + ns.AudioEvent(ns.Gear3, wp59) + ns.ObjectOff(ns.GetTrigger()) +LABEL1: + if !(flag73 == true && flag74 == true) { + goto LABEL2 + } + OpenSecretWallGroup3() + ns.ObjectOn(obj80) +LABEL2: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OpenExitWallGroup() { + ns.WallGroupOpen(gvar81) +} +func PuzzleCheck() { + if !(flag82 && flag83) { + goto LABEL1 + } + OpenExitWallGroup() +LABEL1: + return +} +func LeftPuzzleActivation() { + flag83 = true + PuzzleCheck() +} +func RightPuzzleActivation() { + flag82 = true + ns.AudioEvent(ns.CreatureCageAppears, wp84) + PuzzleCheck() +} +func LeftPuzzleRelease() { + flag83 = false + ns.AudioEvent(ns.CreatureCageAppears, wp85) + PuzzleCheck() +} +func RightPuzzleRelease() { + flag82 = false + PuzzleCheck() +} +func OrbLightOff() { + ns.ObjectOff(obj86) + ns.MoveObject(obj87, ns.GetWaypointX(wp88), ns.GetWaypointY(wp88)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj86, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj87, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp89, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj86) + ns.AudioEvent(ns.BallBounce, wp89) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func MissionStart() { + ns.StartupScreen(10) + ns.JournalEntry(ns.GetHost(), "War10aOrbQuest", 2) + ns.FrameTimer(10, PlaySubMusic) +} +func InitializeVampireKnights() { + obj120 = ns.Object("VampireKnight1") + obj121 = ns.Object("VKBat1") + wp123 = ns.Waypoint("VampireKnight1WP") + wp124 = ns.Waypoint("BatCreate") +} +func MapInitialize() { + obj90 = ns.Object("MissionTrig") + gvar118 = ns.WallGroup("GoldKeyWallGroup") + wp119 = ns.Waypoint("GoldKeyExitWP") + gvar93 = ns.ObjectGroup("PitAmbushGroup") + gvar91 = ns.WallGroup("SkelPitWallGroup") + gvar92 = ns.WallGroup("ElevatorWallGroup") + gvar94 = ns.ObjectGroup("PitSpikesGroup1") + gvar95 = ns.ObjectGroup("PitSpikesGroup2") + gvar96 = ns.ObjectGroup("PitSpikesGroup3") + gvar97 = ns.ObjectGroup("PitSpikesGroup4") + gvar98 = ns.ObjectGroup("PitSpikesGroup5") + wp99 = ns.Waypoint("Spikes1AudioWP") + wp100 = ns.Waypoint("Spikes2AudioWP") + wp101 = ns.Waypoint("Spikes3AudioWP") + wp102 = ns.Waypoint("Spikes4AudioWP") + wp103 = ns.Waypoint("Spikes5AudioWP") + wp104 = ns.Waypoint("Secret1AudioWP") + obj4 = ns.Object("Arrow01") + obj5 = ns.Object("Arrow02") + obj6 = ns.Object("Arrow03") + obj7 = ns.Object("Arrow04") + obj8 = ns.Object("Arrow05") + obj9 = ns.Object("Arrow06") + obj10 = ns.Object("Arrow07") + obj11 = ns.Object("Arrow08") + obj12 = ns.Object("Arrow09") + obj13 = ns.Object("Arrow10") + obj14 = ns.Object("Arrow11") + obj15 = ns.Object("Arrow12") + obj16 = ns.Object("Arrow13") + obj17 = ns.Object("Arrow14") + obj18 = ns.Object("Arrow15") + obj19 = ns.Object("Arrow16") + obj20 = ns.Object("Arrow17") + obj21 = ns.Object("Arrow18") + obj22 = ns.Object("Arrow19") + obj23 = ns.Object("Arrow20") + obj24 = ns.Object("Arrow21") + obj25 = ns.Object("Arrow22") + obj26 = ns.Object("Arrow23") + obj27 = ns.Object("Arrow24") + obj28 = ns.Object("Arrow25") + obj29 = ns.Object("Arrow26") + obj30 = ns.Object("Arrow27") + obj31 = ns.Object("Arrow28") + obj32 = ns.Object("Arrow29") + obj33 = ns.Object("Arrow30") + obj34 = ns.Object("Arrow31") + obj35 = ns.Object("Arrow32") + obj36 = ns.Object("Arrow33") + obj37 = ns.Object("Arrow34") + obj38 = ns.Object("Arrow35") + obj39 = ns.Object("Arrow36") + obj40 = ns.Object("Arrow37") + obj41 = ns.Object("Arrow38") + obj42 = ns.Object("Block1") + obj43 = ns.Object("Block2") + obj44 = ns.Object("Block3") + obj45 = ns.Object("Block4") + obj46 = ns.Object("Block5") + obj47 = ns.Object("Block6") + gvar48 = ns.ObjectGroup("BlockTriggers") + wp49 = ns.Waypoint("Block1WP") + wp50 = ns.Waypoint("Block2WP") + wp51 = ns.Waypoint("Block3WP") + wp52 = ns.Waypoint("Block4WP") + wp53 = ns.Waypoint("Block5WP") + wp54 = ns.Waypoint("Block6WP") + wp55 = ns.Waypoint("Block4WPb") + wp56 = ns.Waypoint("Block5WPb") + wp57 = ns.Waypoint("Block6WPb") + wp58 = ns.Waypoint("BlockAudioWP") + wp59 = ns.Waypoint("BlockAudio2WP") + wp60 = ns.Waypoint("BlockAudio3WP") + wp61 = ns.Waypoint("BlockAudio4WP") + obj105 = ns.Object("Blocks2Trigger") + gvar62 = ns.WallGroup("BlockWallGroup1") + gvar63 = ns.WallGroup("BlockWallGroup2") + gvar64 = ns.WallGroup("BlockWallGroup3") + gvar78 = ns.ObjectGroup("SpikeGroup1") + obj79 = ns.Object("SpikeDoor") + ns.LockDoor(obj79) + obj106 = ns.Object("StoneBlock1") + gvar75 = ns.WallGroup("SecretWallGroup1") + gvar76 = ns.WallGroup("SecretWallGroup2") + gvar77 = ns.WallGroup("SecretWallGroup3") + wp107 = ns.Waypoint("Secret2AudioWP") + gvar108 = ns.ObjectGroup("Secret200Group") + gvar65 = ns.ObjectGroup("SkelGroup1") + gvar66 = ns.ObjectGroup("SkelGroup2") + gvar67 = ns.ObjectGroup("SkelGroup3") + gvar68 = ns.ObjectGroup("SkelGroup4") + gvar69 = ns.ObjectGroup("SkelGroup5") + gvar70 = ns.ObjectGroup("SkelGroup6") + obj109 = ns.Object("VampireKnight1") + obj110 = ns.Object("VKbat1") + wp112 = ns.Waypoint("VampireKnight1WP ") + wp113 = ns.Waypoint("BatCreate") + gvar114 = ns.WallGroup("Vampire1WallGroup") + gvar115 = ns.WallGroup("Vampire1WallGroup2") + gvar116 = ns.ObjectGroup("Vampire1TrigGroup") + gvar117 = ns.WallGroup("CherubWallGroup") + ns.WallGroupOpen(gvar114) + gvar81 = ns.WallGroup("ExitWallGroup") + obj86 = ns.Object("OrbLight") + wp89 = ns.Waypoint("OrbSoundWP") + obj87 = ns.Object("OrbEffect") + wp88 = ns.Waypoint("OrbEffectWP") + wp84 = ns.Waypoint("RightPuzzleWP") + wp85 = ns.Waypoint("LeftPuzzleWP") + obj80 = ns.Object("Necro1") + MissionStart() + InitializeVampireKnights() +} +func OpenGoldKeyWallGroup() { + ns.WallGroupOpen(gvar118) + ns.AudioEvent(ns.FlagDrop, wp119) +} +func OpenCherubWallGroup() { + ns.WallGroupOpen(gvar117) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp104) +} +func Secret200XP() { + ns.GiveXp(ns.GetHost(), 200) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp107) + ns.ObjectGroupOff(gvar108) +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func ToggleSpikes1() { + ns.ObjectGroupToggle(gvar94) + ns.AudioEvent(ns.FloorSpikesDown, wp99) +} +func ToggleSpikes2() { + ns.ObjectGroupToggle(gvar95) + ns.ObjectGroupToggle(gvar96) + ns.AudioEvent(ns.FloorSpikesDown, wp100) + ns.AudioEvent(ns.FloorSpikesDown, wp101) +} +func ToggleSpikes3() { + ns.ObjectGroupToggle(gvar97) + ns.ObjectGroupToggle(gvar98) + ns.AudioEvent(ns.FloorSpikesDown, wp102) + ns.AudioEvent(ns.FloorSpikesDown, wp103) +} +func OpenSkelPitWallGroup() { + ns.WallGroupOpen(gvar91) + ns.GroupAggressionLevel(gvar93, 0.83) +} +func OpenElevatorWallGroup() { + ns.WallGroupOpen(gvar92) +} +func BatToVampireKnight() { + ns.Effect(ns.BLUE_SPARKS, fvar125, fvar126, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar125, fvar126, 0, 0) + ns.Enchant(obj120, ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj120, fvar125, fvar126) + ns.LookAtObject(obj120, ns.GetHost()) + PlayAction3Music() +} +func SetRetreatBat() { + ns.AggressionLevel(obj122, 0.83) + ns.SetCallback(obj122, 7, BatDie) + ns.SetCallback(obj122, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj122), ns.GetObjectY(obj122), 0, 0) + ns.MoveWaypoint(wp124, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.Delete(obj122) + ns.AudioEvent(ns.BurnCast, wp124) + v0 = ns.CreateObject("Flame", wp124) + v1 = ns.CreateObject("MediumFlame", wp124) + v2 = ns.CreateObject("SmallFlame", wp124) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 83) + ns.DeleteObjectTimer(v2, 85) + ns.WallGroupOpen(gvar114) + ns.WallGroupOpen(gvar115) + PlaySubMusic() + ns.GiveXp(ns.GetHost(), 250) +} +func ChangeOnSight() { + if !flag128 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + fvar125 = ns.GetObjectX(ns.GetTrigger()) + fvar126 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj120) + ns.Damage(obj120, 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + ns.FrameTimer(1, BatToVampireKnight) +} +func VKDie() { + fvar125 = ns.GetObjectX(ns.GetTrigger()) + fvar126 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp124, fvar125, fvar126) + obj122 = ns.CreateObject("Bat", wp124) + ns.FrameTimer(1, SetRetreatBat) +} +func OpenVampire1WallGroup() { + ns.WallGroupOpen(gvar114) +} +func CloseVampire1WallGroup() { + ns.WallGroupClose(gvar114) + ns.ObjectGroupOff(gvar116) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/wiz10b/dummy_test.go b/examples/wiz10b/dummy_test.go new file mode 100644 index 0000000..6f22e55 --- /dev/null +++ b/examples/wiz10b/dummy_test.go @@ -0,0 +1,6 @@ +package wiz10b + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz10b/wiz10b.go b/examples/wiz10b/wiz10b.go new file mode 100644 index 0000000..036f564 --- /dev/null +++ b/examples/wiz10b/wiz10b.go @@ -0,0 +1,630 @@ +package wiz10b + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + gvar4 ns.ObjectGroupID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + wp14 ns.WaypointID + wp15 ns.WaypointID + wp16 ns.WaypointID + wp17 ns.WaypointID + wp18 ns.WaypointID + wp19 ns.WaypointID + wp20 ns.WaypointID + wp21 ns.WaypointID + wp22 ns.WaypointID + obj23 ns.ObjectID + obj24 ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + wp29 ns.WaypointID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + gvar41 int + gvar42 int + gvar43 int + obj44 ns.ObjectID + obj45 ns.ObjectID + obj46 ns.ObjectID + obj47 ns.ObjectID + obj48 ns.ObjectID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + wp53 ns.WaypointID + wp54 ns.WaypointID + wp55 ns.WaypointID + wp56 ns.WaypointID + wp57 ns.WaypointID + wp58 ns.WaypointID + gvar59 int + gvar60 int + gvar61 int + obj62 ns.ObjectID + obj63 ns.ObjectID + obj64 ns.ObjectID + wp65 ns.WaypointID + wp66 ns.WaypointID + wp67 ns.WaypointID + wp68 ns.WaypointID + wp69 ns.WaypointID + wp70 ns.WaypointID + gvar71 int + gvar72 int + gvar73 int + obj74 ns.ObjectID + obj75 ns.ObjectID + wp76 ns.WaypointID + wp77 ns.WaypointID + gvar78 ns.WallGroupID + gvar79 ns.ObjectGroupID + gvar80 ns.WallGroupID + gvar81 ns.WallGroupID + gvar82 ns.WallGroupID + obj83 ns.ObjectID + obj84 ns.ObjectID + gvar85 ns.ObjectGroupID + gvar86 ns.ObjectGroupID + gvar87 ns.WallGroupID + obj88 ns.ObjectID + wp89 ns.WaypointID + gvar90 ns.WallGroupID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + wp94 ns.WaypointID + wp95 ns.WaypointID + wp96 ns.WaypointID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + wp100 ns.WaypointID + wp101 ns.WaypointID + gvar102 ns.ObjectGroupID + gvar103 ns.WallGroupID + gvar104 ns.WallGroupID + gvar105 ns.WallGroupID + gvar106 ns.WallGroupID + gvar107 ns.WallGroupID + obj108 ns.ObjectID + obj109 ns.ObjectID + gvar110 ns.WallGroupID + obj111 [2]ns.ObjectID + obj112 [2]ns.ObjectID + obj113 ns.ObjectID + wp114 ns.WaypointID + wp115 ns.WaypointID + wp116 ns.WaypointID + fvar117 float32 + fvar118 float32 + flag119 bool + flag120 bool +) + +func init() { + gvar41 = 0 + gvar42 = 1 + gvar43 = gvar41 + gvar59 = 0 + gvar60 = 1 + gvar61 = gvar59 + gvar71 = 0 + gvar72 = 1 + gvar73 = gvar71 + flag119 = false + flag120 = false +} +func DisableArrow1() { + ns.ObjectOff(obj5) +} +func EnableArrow1() { + ns.ObjectOn(obj5) + ns.AudioEvent(ns.BowShoot, wp14) + ns.FrameTimer(1, DisableArrow1) +} +func DisableArrow2() { + ns.ObjectOff(obj6) +} +func EnableArrow2() { + ns.ObjectOn(obj6) + ns.AudioEvent(ns.BowShoot, wp15) + ns.FrameTimer(1, DisableArrow2) +} +func DisableArrow3() { + ns.ObjectOff(obj7) +} +func EnableArrow3() { + ns.ObjectOn(obj7) + ns.AudioEvent(ns.BowShoot, wp16) + ns.FrameTimer(1, DisableArrow3) +} +func DisableArrow4() { + ns.ObjectOff(obj8) +} +func EnableArrow4() { + ns.ObjectOn(obj8) + ns.AudioEvent(ns.BowShoot, wp17) + ns.FrameTimer(1, DisableArrow4) +} +func DisableArrow5() { + ns.ObjectOff(obj9) +} +func EnableArrow5() { + ns.ObjectOn(obj9) + ns.AudioEvent(ns.BowShoot, wp18) + ns.FrameTimer(1, DisableArrow5) +} +func DisableArrow6() { + ns.ObjectOff(obj10) +} +func EnableArrow6() { + ns.ObjectOn(obj10) + ns.AudioEvent(ns.BowShoot, wp19) + ns.FrameTimer(1, DisableArrow6) +} +func DisableArrow7() { + ns.ObjectOff(obj11) +} +func EnableArrow7() { + ns.ObjectOn(obj11) + ns.AudioEvent(ns.BowShoot, wp20) + ns.FrameTimer(1, DisableArrow7) +} +func DisableArrow8() { + ns.ObjectOff(obj12) +} +func EnableArrow8() { + ns.ObjectOn(obj12) + ns.AudioEvent(ns.BowShoot, wp21) + ns.FrameTimer(1, DisableArrow8) +} +func DisableArrow9() { + ns.ObjectOff(obj13) +} +func EnableArrow9() { + ns.ObjectOn(obj13) + ns.AudioEvent(ns.BowShoot, wp22) + ns.FrameTimer(1, DisableArrow9) +} +func DisableArrowTriggers() { + ns.ObjectGroupOff(gvar4) +} +func EnableArrowTriggers() { + ns.ObjectGroupOn(gvar4) +} +func BlockAGotoB() { + ns.Move(obj23, wp29) + ns.Move(obj24, wp30) + ns.Move(obj25, wp31) + ns.Move(obj26, wp32) + ns.Move(obj27, wp33) + ns.Move(obj28, wp34) + gvar43 = gvar42 + ns.AudioEvent(ns.SpikeBlockMove, wp30) + ns.AudioEvent(ns.BoulderMove, wp30) +} +func BlockAGotoC() { + ns.Move(obj23, wp35) + ns.Move(obj24, wp36) + ns.Move(obj25, wp37) + ns.Move(obj26, wp38) + ns.Move(obj27, wp39) + ns.Move(obj28, wp40) + gvar43 = gvar41 + ns.AudioEvent(ns.SpikeBlockMove, wp30) + ns.AudioEvent(ns.BoulderMove, wp30) +} +func BlockAGo() { + var v0 int + v0 = gvar43 + if v0 == gvar41 { + goto LABEL1 + } + if v0 == gvar42 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockAGotoB() + goto LABEL3 +LABEL2: + BlockAGotoC() + goto LABEL3 +LABEL3: + return +} +func BlockBGotoB() { + ns.Move(obj44, wp49) + ns.Move(obj45, wp50) + ns.Move(obj46, wp51) + ns.Move(obj47, wp52) + ns.Move(obj48, wp53) + gvar61 = gvar60 + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.AudioEvent(ns.BoulderMove, wp50) +} +func BlockBGotoC() { + ns.Move(obj44, wp54) + ns.Move(obj45, wp55) + ns.Move(obj46, wp56) + ns.Move(obj47, wp57) + ns.Move(obj48, wp58) + gvar61 = gvar59 + ns.AudioEvent(ns.SpikeBlockMove, wp50) + ns.AudioEvent(ns.BoulderMove, wp50) +} +func BlockBGo() { + var v0 int + v0 = gvar61 + if v0 == gvar59 { + goto LABEL1 + } + if v0 == gvar60 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockBGotoB() + goto LABEL3 +LABEL2: + BlockBGotoC() + goto LABEL3 +LABEL3: + return +} +func BlockCGotoB() { + ns.Move(obj62, wp65) + ns.Move(obj63, wp66) + ns.Move(obj64, wp67) + gvar73 = gvar72 + ns.AudioEvent(ns.SpikeBlockMove, wp65) + ns.AudioEvent(ns.BoulderMove, wp65) +} +func BlockCGotoC() { + ns.Move(obj62, wp68) + ns.Move(obj63, wp69) + ns.Move(obj64, wp70) + gvar73 = gvar71 + ns.AudioEvent(ns.SpikeBlockMove, wp68) + ns.AudioEvent(ns.BoulderMove, wp68) +} +func BlockCGo() { + var v0 int + v0 = gvar73 + if v0 == gvar71 { + goto LABEL1 + } + if v0 == gvar72 { + goto LABEL2 + } + goto LABEL3 +LABEL1: + BlockCGotoB() + goto LABEL3 +LABEL2: + BlockCGotoC() + goto LABEL3 +LABEL3: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OrbLightOff() { + ns.ObjectOff(obj74) + ns.MoveObject(obj75, ns.GetWaypointX(wp76), ns.GetWaypointY(wp76)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj74, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj75, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp77, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj74) + ns.AudioEvent(ns.BallBounce, wp77) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func OpenBouncySecretWallGroup() { + ns.WallGroupOpen(gvar78) +} +func InitializeVampireKnights() { + obj111[0] = ns.Object("VampireKnight1") + obj112[0] = ns.Object("VKBat1") + wp114 = ns.Waypoint("VKSpot") + wp115 = ns.Waypoint("VampireKnight1WP") + wp116 = ns.Waypoint("BatCreate") +} +func MapInitialize() { + gvar80 = ns.WallGroup("ZombieAmbushWalls") + gvar79 = ns.ObjectGroup("ZombieAmbushGroup") + gvar81 = ns.WallGroup("SkeletonWallGroup") + gvar82 = ns.WallGroup("SkeletonWallGroup2") + obj83 = ns.Object("SkeletonTrigger1") + obj84 = ns.Object("SkeletonElevator") + gvar85 = ns.ObjectGroup("SkelAmbushGroup") + gvar86 = ns.ObjectGroup("SecretMechGroup") + gvar87 = ns.WallGroup("SecretMechWallGroup") + obj88 = ns.Object("SecretMechTrig") + wp89 = ns.Waypoint("Secret1AudioWP") + obj23 = ns.Object("BlockA1") + obj24 = ns.Object("BlockA2") + obj25 = ns.Object("BlockA3") + obj26 = ns.Object("BlockA4") + obj27 = ns.Object("BlockA5") + obj28 = ns.Object("BlockA6") + wp29 = ns.Waypoint("BlockWPA1b") + wp30 = ns.Waypoint("BlockWPA2b") + wp31 = ns.Waypoint("BlockWPA3b") + wp32 = ns.Waypoint("BlockWPA4b") + wp33 = ns.Waypoint("BlockWPA5b") + wp34 = ns.Waypoint("BlockWPA6b") + wp35 = ns.Waypoint("BlockWPA1c") + wp36 = ns.Waypoint("BlockWPA2c") + wp37 = ns.Waypoint("BlockWPA3c") + wp38 = ns.Waypoint("BlockWPA4c") + wp39 = ns.Waypoint("BlockWPA5c") + wp40 = ns.Waypoint("BlockWPA6c") + obj44 = ns.Object("BlockB1") + obj45 = ns.Object("BlockB2") + obj46 = ns.Object("BlockB3") + obj47 = ns.Object("BlockB4") + obj48 = ns.Object("BlockB5") + wp49 = ns.Waypoint("BlockWPB1b") + wp50 = ns.Waypoint("BlockWPB2b") + wp51 = ns.Waypoint("BlockWPB3b") + wp52 = ns.Waypoint("BlockWPB4b") + wp53 = ns.Waypoint("BlockWPB5b") + wp54 = ns.Waypoint("BlockWPB1c") + wp55 = ns.Waypoint("BlockWPB2c") + wp56 = ns.Waypoint("BlockWPB3c") + wp57 = ns.Waypoint("BlockWPB4c") + wp58 = ns.Waypoint("BlockWPB5c") + obj62 = ns.Object("BlockC1") + obj63 = ns.Object("BlockC2") + obj64 = ns.Object("BlockC3") + wp65 = ns.Waypoint("BlockWPC1b") + wp66 = ns.Waypoint("BlockWPC2b") + wp67 = ns.Waypoint("BlockWPC3b") + wp68 = ns.Waypoint("BlockWPC1c") + wp69 = ns.Waypoint("BlockWPC2c") + wp70 = ns.Waypoint("BlockWPC3c") + gvar90 = ns.WallGroup("VampireWallGroup") + obj91 = ns.Object("VampireKnight1") + obj92 = ns.Object("VKBat1") + obj93 = ns.Object("RetreatBat") + wp94 = ns.Waypoint("VampireKnight1WP") + wp95 = ns.Waypoint("BatCreate") + wp96 = ns.Waypoint("VKSpot") + InitializeVampireKnights() + gvar4 = ns.ObjectGroup("ArrowTrigGroup") + obj5 = ns.Object("Arrow1") + obj6 = ns.Object("Arrow2") + obj7 = ns.Object("Arrow3") + obj8 = ns.Object("Arrow4") + obj9 = ns.Object("Arrow5") + obj10 = ns.Object("Arrow6") + obj11 = ns.Object("Arrow7") + obj12 = ns.Object("Arrow8") + obj13 = ns.Object("Arrow9") + wp14 = ns.Waypoint("Arrow1WP") + wp15 = ns.Waypoint("Arrow2WP") + wp16 = ns.Waypoint("Arrow3WP") + wp17 = ns.Waypoint("Arrow4WP") + wp18 = ns.Waypoint("Arrow5WP") + wp19 = ns.Waypoint("Arrow6WP") + wp20 = ns.Waypoint("Arrow7WP") + wp21 = ns.Waypoint("Arrow8WP") + wp22 = ns.Waypoint("Arrow9WP") + obj97 = ns.Object("MechGolem1") + obj98 = ns.Object("MechGolem2") + obj99 = ns.Object("MechGolem3") + wp100 = ns.Waypoint("MechGolem2WP") + wp101 = ns.Waypoint("MechGolemAudioWP") + gvar102 = ns.ObjectGroup("GolemTrigGroup") + obj108 = ns.Object("MazeTrig1") + obj109 = ns.Object("MazeTrig2") + gvar110 = ns.WallGroup("CherubBreakWallGroup") + gvar103 = ns.WallGroup("GolemWallGroup") + gvar104 = ns.WallGroup("GolemWall2Group") + gvar105 = ns.WallGroup("GolemWall3Group") + gvar106 = ns.WallGroup("GolemGate1Group") + gvar107 = ns.WallGroup("GolemGate2Group") + obj74 = ns.Object("OrbLight") + obj75 = ns.Object("OrbEffect") + wp76 = ns.Waypoint("OrbEffectWP") + wp77 = ns.Waypoint("OrbSoundWP") + gvar78 = ns.WallGroup("BouncySecretWallGroup") +} +func Secret300XP() { + ns.GiveXp(ns.GetHost(), 300) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp89) +} +func PlayAction1Music() { + ns.Music(26, 100) +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func BreakCherubWalls() { + ns.WallGroupBreak(gvar110) + PlaySubMusic() +} +func GolemWallDown() { + ns.WallGroupOpen(gvar103) + ns.ObjectOn(obj97) + ns.AudioEvent(ns.MechGolemPowerUp, wp101) + ns.ObjectGroupOff(gvar102) + PlayAction1Music() +} +func GolemWall2Down() { + ns.NoWallSound(true) + ns.WallGroupOpen(gvar104) + ns.NoWallSound(false) + ns.ObjectOn(obj98) + ns.AudioEvent(ns.MechGolemRecognize, wp100) + ns.AudioEvent(ns.MechGolemPowerUp, wp100) +} +func GolemWall3Down() { + ns.WallGroupOpen(gvar105) + ns.ObjectOn(obj99) + ns.ObjectOn(obj88) +} +func OpenGolemGate1() { + ns.WallGroupOpen(gvar106) + ns.ObjectOff(obj108) +} +func OpenGolemGate2() { + ns.WallGroupOpen(gvar107) + ns.ObjectOff(obj109) +} +func HostilizeMe() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func BatToVampireKnight() { + if flag119 { + goto LABEL1 + } + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj111[0]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar117, fvar118, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar117, fvar118, 0, 0) + ns.Enchant(obj111[0], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj111[0], fvar117, fvar118) + ns.LookAtObject(obj111[0], ns.GetHost()) +} +func SetRetreatBat() { + ns.AggressionLevel(obj113, 0.83) + ns.SetCallback(obj113, 7, BatDie) + ns.SetCallback(obj113, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + if !(ns.CurrentHealth(obj113) <= 0) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj113), ns.GetObjectY(obj113), 0, 0) + ns.MoveWaypoint(wp116, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.Delete(obj113) + ns.AudioEvent(ns.BurnCast, wp116) + v0 = ns.CreateObject("Flame", wp116) + v1 = ns.CreateObject("MediumFlame", wp116) + v2 = ns.CreateObject("SmallFlame", wp116) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 85) + ns.DeleteObjectTimer(v2, 90) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 250) +LABEL1: + return +} +func ChangeOnSight() { + if !flag120 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj111[0]) + ns.Damage(obj111[0], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag119 = true + ns.FrameTimer(1, BatToVampireKnight) +} +func BatMove() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.SetCallback(ns.GetTrigger(), 4, ChangeOnSight) + ns.Move(obj112[0], wp114) +LABEL1: + return +} +func VKDie() { + fvar117 = ns.GetObjectX(ns.GetTrigger()) + fvar118 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp116, fvar117, fvar118) + obj113 = ns.CreateObject("Bat", wp116) + ns.FrameTimer(1, SetRetreatBat) +} +func ZombieAmbush() { + ns.WallGroupOpen(gvar80) + ns.ObjectGroupOn(gvar79) +} +func SkeletonAttack() { + ns.WallGroupOpen(gvar81) + ns.WallGroupClose(gvar82) + ns.ObjectOn(obj83) + ns.ObjectGroupOn(gvar85) + PlayAction3Music() +} +func OpenSkeletonWallGroup2() { + ns.WallGroupOpen(gvar82) + ns.ObjectOn(obj84) +} +func Secret300() { + ns.PrintToAll("GeneralPrint:SecretFound") + ns.GiveXp(ns.GetHost(), 300) +} +func OpenSecretMechWallGroup() { + ns.WallGroupOpen(gvar87) + ns.GroupAggressionLevel(gvar86, 0.83) + Secret300() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/wiz10c/dummy_test.go b/examples/wiz10c/dummy_test.go new file mode 100644 index 0000000..c683f3d --- /dev/null +++ b/examples/wiz10c/dummy_test.go @@ -0,0 +1,6 @@ +package wiz10c + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz10c/wiz10c.go b/examples/wiz10c/wiz10c.go new file mode 100644 index 0000000..50e8943 --- /dev/null +++ b/examples/wiz10c/wiz10c.go @@ -0,0 +1,693 @@ +package wiz10c + +import "github.com/noxworld-dev/noxscript/ns/v3" + +var ( + obj4 [21]ns.ObjectID + ivar5 int + obj6 ns.ObjectID + obj7 ns.ObjectID + wp8 ns.WaypointID + wp9 ns.WaypointID + obj10 ns.ObjectID + obj11 ns.ObjectID + obj12 ns.ObjectID + obj13 ns.ObjectID + obj14 ns.ObjectID + obj15 ns.ObjectID + obj16 ns.ObjectID + obj17 ns.ObjectID + obj18 ns.ObjectID + obj19 ns.ObjectID + obj20 ns.ObjectID + obj21 ns.ObjectID + obj22 ns.ObjectID + obj23 ns.ObjectID + obj24 [6]ns.ObjectID + obj25 ns.ObjectID + obj26 ns.ObjectID + obj27 ns.ObjectID + obj28 ns.ObjectID + obj29 ns.ObjectID + obj30 ns.ObjectID + obj31 ns.ObjectID + obj32 ns.ObjectID + obj33 ns.ObjectID + obj34 ns.ObjectID + obj35 ns.ObjectID + obj36 ns.ObjectID + obj37 ns.ObjectID + obj38 ns.ObjectID + obj39 ns.ObjectID + gvar40 ns.ObjectGroupID + gvar41 ns.ObjectGroupID + obj42 ns.ObjectID + wp43 [2]ns.WaypointID + wp44 ns.WaypointID + gvar45 ns.WallGroupID + gvar46 ns.WallGroupID + gvar47 ns.WallGroupID + gvar48 ns.WallGroupID + gvar49 ns.WallGroupID + gvar50 ns.WallGroupID + gvar51 ns.WallGroupID + gvar52 ns.WallGroupID + gvar53 ns.WallGroupID + gvar54 ns.WallGroupID + gvar55 ns.WallGroupID + gvar56 ns.WallGroupID + gvar57 ns.WallGroupID + gvar58 ns.WallGroupID + wp59 ns.WaypointID + gvar60 ns.WallGroupID + flag61 bool + flag62 bool + flag63 bool + flag64 bool + flag65 bool + flag66 bool + flag67 bool + flag68 bool + ivar69 int + wp70 ns.WaypointID + wp71 ns.WaypointID + obj72 ns.ObjectID + gvar73 ns.ObjectGroupID + wp74 [5]ns.WaypointID + wp75 ns.WaypointID + obj76 [2]ns.ObjectID + obj77 [2]ns.ObjectID + obj78 ns.ObjectID + wp79 ns.WaypointID + wp80 ns.WaypointID + wp81 ns.WaypointID + fvar82 float32 + fvar83 float32 + flag84 bool + flag85 bool +) + +func init() { + flag61 = false + flag62 = false + flag63 = false + flag64 = false + flag65 = false + flag66 = false + flag67 = false + flag68 = false + ivar69 = 0 + flag84 = false + flag85 = false +} +func DisableAT(a1 int) { + ns.ObjectOff(obj4[a1]) +} +func FireAT0() { + ns.ObjectOn(obj4[0]) + ns.FrameTimerWithArg(1, nil, DisableAT) +} +func FireAT1() { + ns.ObjectOn(obj4[1]) + ns.FrameTimerWithArg(1, 1, DisableAT) +} +func FireAT2() { + ns.ObjectOn(obj4[2]) + ns.FrameTimerWithArg(1, 2, DisableAT) +} +func FireAT3() { + ns.ObjectOn(obj4[3]) + ns.FrameTimerWithArg(1, 3, DisableAT) +} +func FireAT4() { + ns.ObjectOn(obj4[4]) + ns.FrameTimerWithArg(1, 4, DisableAT) +} +func FireAT5() { + ns.ObjectOn(obj4[5]) + ns.FrameTimerWithArg(1, 5, DisableAT) +} +func FireAT6() { + ns.ObjectOn(obj4[6]) + ns.FrameTimerWithArg(1, 6, DisableAT) +} +func FireAT7() { + ns.ObjectOn(obj4[7]) + ns.FrameTimerWithArg(1, 7, DisableAT) +} +func FireAT8() { + ns.ObjectOn(obj4[8]) + ns.FrameTimerWithArg(1, 8, DisableAT) +} +func FireAT9() { + ns.ObjectOn(obj4[9]) + ns.FrameTimerWithArg(1, 9, DisableAT) +} +func FireAT10() { + ns.ObjectOn(obj4[10]) + ns.FrameTimerWithArg(1, 10, DisableAT) +} +func FireAT11() { + ns.ObjectOn(obj4[11]) + ns.FrameTimerWithArg(1, 11, DisableAT) +} +func FireAT17() { + ns.ObjectOn(obj4[17]) + ns.FrameTimerWithArg(1, 17, DisableAT) +} +func FireAT18() { + ns.ObjectOn(obj4[18]) + ns.FrameTimerWithArg(1, 18, DisableAT) +} +func FireAT19() { + ns.ObjectOn(obj4[19]) + ns.FrameTimerWithArg(1, 19, DisableAT) +} +func FireAT20() { + ns.ObjectOn(obj4[20]) + ns.FrameTimerWithArg(1, 20, DisableAT) +} +func FireATRow() { + ns.ObjectOn(obj4[12]) + ns.ObjectOn(obj4[13]) + ns.ObjectOn(obj4[14]) + ns.ObjectOn(obj4[15]) + ns.ObjectOn(obj4[16]) + ivar5 = 12 + for { + if !(ivar5 < 17) { + goto LABEL1 + } + ns.FrameTimerWithArg(1, ivar5, DisableAT) + ivar5 += 1 + } +LABEL1: + return +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func OrbLightOff() { + ns.ObjectOff(obj6) + ns.MoveObject(obj7, ns.GetWaypointX(wp8), ns.GetWaypointY(wp8)) +} +func ForceOrb() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.RandomFloat(-30, 30) + v1 = ns.RandomFloat(-30, 30) + v2 = ns.GetObjectX(ns.GetTrigger()) + v0 + v3 = ns.GetObjectY(ns.GetTrigger()) + v1 + ns.MoveObject(obj6, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(obj7, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())+6) + ns.MoveWaypoint(wp9, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.ObjectOn(obj6) + ns.AudioEvent(ns.BallBounce, wp9) + ns.PushObject(ns.GetCaller(), 60, v2, v3) + ns.FrameTimer(4, OrbLightOff) +} +func StairAccess2() { + if !(flag63 == true && flag64 == true) { + goto LABEL1 + } + ns.UnlockDoor(obj12) + ns.UnlockDoor(obj13) +LABEL1: + return +} +func CreateCherub() { + var v0 int + if !(ivar69 < 6) { + goto LABEL1 + } + v0 = ns.Random(0, 1) + obj24[ivar69] = ns.CreateObject("EvilCherub", wp43[v0]) + ns.Effect(ns.BLUE_SPARKS, ns.GetWaypointX(wp43[v0]), ns.GetWaypointY(wp43[v0]), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp43[v0]), ns.GetWaypointY(wp43[v0]), 0, 0) + ns.SetCallback(obj24[ivar69], 5, CreateCherub) + ns.SetRoamFlag(obj24[ivar69], 128) + ns.AggressionLevel(obj24[ivar69], 0.83) + ivar69 += 1 + goto LABEL2 +LABEL1: + return +LABEL2: + return +} +func WakeVKBat2() { + ns.ObjectOn(obj77[1]) +} +func PlayAction2Music() { + ns.Music(27, 100) +} +func CherubHostilize() { + ns.GroupAggressionLevel(gvar41, 0.83) +} +func OpenSecretRoom() { + ns.WallGroupOpen(gvar48) +} +func EnableTreasureLich1() { + ns.ObjectOn(obj14) +} +func AccessTreasureRoom1() { + ns.WallGroupOpen(gvar45) +} +func EnableTreasureLich2() { + ns.ObjectOn(obj15) +} +func AccessTreasureRoom2() { + ns.WallGroupOpen(gvar46) +} +func EnableTreasureMech() { + ns.ObjectOn(obj16) +} +func AccessTreasureRoom3() { + ns.WallGroupOpen(gvar47) +} +func EnableRoom() { + if !(ns.IsCaller(ns.GetHost()) && flag61 == false) { + goto LABEL1 + } + flag61 = true + ns.ObjectOn(obj27) + ns.LockDoor(obj10) + ns.LockDoor(obj11) +LABEL1: + return +} +func StairAccess1() { + ns.WallGroupOpen(gvar49) + ns.UnlockDoor(obj10) + ns.UnlockDoor(obj11) +} +func AllowAccess2() { + ns.PrintToAll("War10c:SentryDisabled") + ns.ObjectOff(obj21) + ns.ObjectOff(obj20) + ns.ObjectOff(obj19) + ns.AudioEvent(ns.Gear2, wp71) +} +func EnableRoom2() { + PlayAction2Music() + if !(ns.IsCaller(ns.GetHost()) && flag62 == false) { + goto LABEL1 + } + flag62 = true + ns.LockDoor(obj12) + ns.LockDoor(obj13) + ns.FrameTimer(800, CreateCherub) +LABEL1: + return +} +func OneDown() { + flag63 = true + ns.FrameTimer(1, StairAccess2) +} +func TwoDown() { + flag64 = true + ns.FrameTimer(1, StairAccess2) +} +func SwitchOffSentries() { + ns.ObjectOff(obj17) + ns.ObjectOff(obj18) + ns.UnlockDoor(obj12) + ns.UnlockDoor(obj13) +} +func SwitchOnSentries() { + ns.ObjectOn(obj17) + ns.ObjectOn(obj18) +} +func UnlockAccessDoors() { + ns.ObjectOff(obj31) + ns.UnlockDoor(obj25) + ns.UnlockDoor(obj26) + ns.WallGroupOpen(gvar60) +} +func OpenWall01() { + ns.WallGroupOpen(gvar55) + ns.AggressionLevel(obj42, 0.83) +} +func Lich1Hostilize() { + ns.AggressionLevel(obj42, 0.83) +} +func OpenWindowWall1() { + ns.WallGroupOpen(gvar56) +} +func CloseWindowWall1() { + ns.WallGroupClose(gvar56) +} +func OpenWindowWall2() { + ns.WallGroupOpen(gvar57) +} +func CloseWindowWall2() { + ns.WallGroupClose(gvar57) +} +func OpenCage1() { + ns.WallGroupOpen(gvar50) + ns.ObjectOn(obj28) +} +func OpenCage2() { + ns.WallGroupOpen(gvar51) + ns.ObjectOn(obj30) +} +func OpenCage3() { + ns.WallGroupOpen(gvar52) + ns.ObjectOn(obj29) +} +func OpenCage4() { + ns.WallGroupOpen(gvar53) + WakeVKBat2() +} +func OpenAccess() { + ns.WallGroupOpen(gvar54) +} +func CheckIdols() { + if !(flag65 == true && flag66 == true) { + goto LABEL1 + } + ns.ObjectGroupOn(gvar40) +LABEL1: + return +} +func BlueIdol() { + if !ns.IsCaller(obj32) { + goto LABEL1 + } + flag65 = true + CheckIdols() + ns.ObjectOff(obj38) + ns.ObjectOn(obj33) + ns.Delete(obj32) + ns.Delete(obj36) + ns.AudioEvent(ns.Gear2, wp70) +LABEL1: + return +} +func RedIdol() { + if !ns.IsCaller(obj34) { + goto LABEL1 + } + flag66 = true + CheckIdols() + ns.ObjectOff(obj39) + ns.ObjectOn(obj35) + ns.Delete(obj34) + ns.Delete(obj37) + ns.AudioEvent(ns.Gear2, wp70) +LABEL1: + return +} +func CheckSwitches() { + if !(flag67 == true && flag68 == true) { + goto LABEL1 + } + ns.WallGroupOpen(gvar58) +LABEL1: + return +} +func ExitWallSwitch1() { + ns.AudioEvent(ns.Gear3, wp59) + flag67 = true + CheckSwitches() +} +func ExitWallSwitch2() { + ns.AudioEvent(ns.Gear3, wp59) + flag68 = true + CheckSwitches() +} +func HostilizeMe() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) +} +func InitializeVampireKnights() { + obj76[0] = ns.Object("VampireKnight1") + obj76[1] = ns.Object("VampireKnight2") + obj77[0] = ns.Object("VKBat1") + obj77[1] = ns.Object("VKBat2") + wp79 = ns.Waypoint("VKSpot") + wp80 = ns.Waypoint("VampireKnight1WP") + wp81 = ns.Waypoint("BatCreate") +} +func PlaySubMusic() { + ns.Music(18, 100) +} +func MapInitialize() { + wp71 = ns.Waypoint("SentryAudioWP") + wp70 = ns.Waypoint("LichKeyAudioWP") + gvar41 = ns.ObjectGroup("CherubPitGroup") + obj6 = ns.Object("OrbLight") + obj7 = ns.Object("OrbEffect") + obj10 = ns.Object("ForceOrbDoorA") + obj11 = ns.Object("ForceOrbDoorB") + obj12 = ns.Object("ForceOrbDoorC") + obj13 = ns.Object("ForceOrbDoorD") + obj4[0] = ns.Object("AT0") + obj4[1] = ns.Object("AT1") + obj4[2] = ns.Object("AT2") + obj4[3] = ns.Object("AT3") + obj4[4] = ns.Object("AT4") + obj4[5] = ns.Object("AT5") + obj4[6] = ns.Object("AT6") + obj4[7] = ns.Object("AT7") + obj4[8] = ns.Object("AT8") + obj4[9] = ns.Object("AT9") + obj4[10] = ns.Object("AT10") + obj4[11] = ns.Object("AT11") + obj4[12] = ns.Object("AT12") + obj4[13] = ns.Object("AT13") + obj4[14] = ns.Object("AT14") + obj4[15] = ns.Object("AT15") + obj4[16] = ns.Object("AT16") + obj4[17] = ns.Object("AT17") + obj4[18] = ns.Object("AT18") + obj4[19] = ns.Object("AT19") + obj4[20] = ns.Object("AT20") + obj14 = ns.Object("TreasureLich1") + obj15 = ns.Object("TreasureLich2") + obj16 = ns.Object("TreasureMech") + obj27 = ns.Object("Necromancer1") + obj28 = ns.Object("Necromancer2") + obj29 = ns.Object("Necromancer3") + obj42 = ns.Object("Lich1") + obj72 = ns.Object("Lich2") + obj30 = ns.Object("Lich3") + obj17 = ns.Object("Sentry1") + obj18 = ns.Object("Sentry2") + obj19 = ns.Object("Sentry3") + obj20 = ns.Object("Sentry4") + obj21 = ns.Object("SentrySwitch") + obj22 = ns.Object("MainSentry1") + obj23 = ns.Object("MainSentry2") + obj25 = ns.Object("AccessDoorA") + obj26 = ns.Object("AccessDoorB") + obj31 = ns.Object("OpenDoors") + obj32 = ns.Object("BlueIdol") + obj34 = ns.Object("RedIdol") + obj33 = ns.Object("BlueIdolBase") + obj35 = ns.Object("RedIdolBase") + obj36 = ns.Object("BlueTrigger") + obj37 = ns.Object("RedTrigger") + obj38 = ns.Object("BlueIdolSentry") + obj39 = ns.Object("RedIdolSentry") + wp74[0] = ns.Waypoint("N1TeleWP0") + wp74[1] = ns.Waypoint("N1TeleWP1") + wp74[2] = ns.Waypoint("N1TeleWP2") + wp74[3] = ns.Waypoint("N1TeleWP3") + wp74[4] = ns.Waypoint("N1TeleWP4") + wp9 = ns.Waypoint("OrbSoundWP") + wp8 = ns.Waypoint("OrbEffectWP") + wp43[0] = ns.Waypoint("CherubCreate1") + wp43[1] = ns.Waypoint("CherubCreate2") + gvar73 = ns.ObjectGroup("VampTriggers") + gvar40 = ns.ObjectGroup("FinalLiches") + gvar45 = ns.WallGroup("TreasureRoom1Walls") + gvar46 = ns.WallGroup("TreasureRoom2Walls") + gvar47 = ns.WallGroup("TreasureRoom3Walls") + wp44 = ns.Waypoint("MechGolemAudioWP") + gvar48 = ns.WallGroup("SecretRoomWall") + gvar49 = ns.WallGroup("ForceOrbRoomWalls1") + gvar50 = ns.WallGroup("Cage1") + gvar51 = ns.WallGroup("Cage2") + gvar52 = ns.WallGroup("Cage3") + gvar53 = ns.WallGroup("Cage4") + gvar54 = ns.WallGroup("AccessTreasureRoom3") + gvar55 = ns.WallGroup("OpeningWall01") + gvar56 = ns.WallGroup("WindowWall1") + gvar57 = ns.WallGroup("WindowWall2") + gvar58 = ns.WallGroup("LichStairAccess") + gvar60 = ns.WallGroup("BlueKeyWallGroup") + wp75 = ns.Waypoint("Secret1AudioWP") + wp59 = ns.Waypoint("ExitAudioWP") + PlaySubMusic() + InitializeVampireKnights() + ns.LockDoor(obj25) + ns.LockDoor(obj26) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.SecretFound, wp75) +} +func PlayWanderMusic() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.Music(17, 100) +LABEL1: + return +} +func Necro1TeleportInjured() { + var ( + v0 float32 + v1 float32 + v2 int + ) + v2 = ns.Random(0, 4) + v0 = ns.GetWaypointX(wp74[v2]) + v1 = ns.GetWaypointY(wp74[v2]) + ns.PauseObject(ns.GetTrigger(), 15) + ns.Enchant(ns.GetTrigger(), ns.ENCHANT_INVISIBLE, 2) + ns.Effect(ns.BLUE_SPARKS, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveObject(ns.GetTrigger(), v0, v1) + ns.Effect(ns.BLUE_SPARKS, v0, v1, 0, 0) + ns.Effect(ns.SMOKE_BLAST, v0, v1, 0, 0) +} +func SmackPlayer() { + r0 := ns.IsAttackedBy(ns.GetCaller(), ns.GetTrigger()) + if !r0 { + goto LABEL1 + } + ns.LookAtObject(ns.GetTrigger(), ns.GetCaller()) + ns.HitLocation(ns.GetTrigger(), ns.GetObjectX(ns.GetCaller()), ns.GetObjectY(ns.GetCaller())) +LABEL1: + return +} +func HuntPlayer() { + ns.CreatureHunt(ns.GetTrigger()) +} +func BatToVampireKnight() { + if flag84 { + goto LABEL1 + } + fvar82 = ns.GetObjectX(ns.GetTrigger()) + fvar83 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj76[0]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar82, fvar83, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar82, fvar83, 0, 0) + ns.Enchant(obj76[0], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj76[0], fvar82, fvar83) + ns.LookAtObject(obj76[0], ns.GetHost()) + flag84 = false +} +func BatToVampireKnight2() { + if flag84 { + goto LABEL1 + } + fvar82 = ns.GetObjectX(ns.GetTrigger()) + fvar83 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.ObjectOn(obj76[1]) +LABEL1: + ns.Effect(ns.BLUE_SPARKS, fvar82, fvar83, 0, 0) + ns.Effect(ns.SMOKE_BLAST, fvar82, fvar83, 0, 0) + ns.Enchant(obj76[1], ns.ENCHANT_INVISIBLE, 0.25) + ns.MoveObject(obj76[1], fvar82, fvar83) + ns.LookAtObject(obj76[1], ns.GetHost()) +} +func SetRetreatBat() { + ns.AggressionLevel(obj78, 0.83) + ns.SetCallback(obj78, 7, BatDie) + ns.SetCallback(obj78, 5, BatDie) +} +func BatDie() { + var ( + v0 ns.ObjectID + v1 ns.ObjectID + v2 ns.ObjectID + ) + if !(ns.CurrentHealth(ns.GetTrigger()) <= 0) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.MoveWaypoint(wp81, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger())) + ns.MoveObject(ns.GetTrigger(), ns.GetWaypointX(wp80), ns.GetWaypointY(wp80)) + ns.Delete(obj78) + ns.AudioEvent(ns.BurnCast, wp81) + v0 = ns.CreateObject("Flame", wp81) + v1 = ns.CreateObject("MediumFlame", wp81) + v2 = ns.CreateObject("SmallFlame", wp81) + ns.DeleteObjectTimer(v0, 80) + ns.DeleteObjectTimer(v1, 83) + ns.DeleteObjectTimer(v2, 85) + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.GiveXp(ns.GetHost(), 250) +LABEL1: + return +} +func ChangeOnSight() { + if !flag85 { + goto LABEL1 + } + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.SetCallback(ns.GetTrigger(), 6, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight() { + if flag84 { + goto LABEL1 + } + fvar82 = ns.GetObjectX(ns.GetTrigger()) + fvar83 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj76[0]) + ns.Damage(obj76[0], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag84 = true + ns.FrameTimer(1, BatToVampireKnight) +LABEL1: + return +} +func InjureVampireKnight2() { + fvar82 = ns.GetObjectX(ns.GetTrigger()) + fvar83 = ns.GetObjectY(ns.GetTrigger()) + ns.ObjectOn(obj76[1]) + ns.Damage(obj76[1], 0, 50, 0) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(ns.GetTrigger()), ns.GetObjectY(ns.GetTrigger()), 0, 0) + ns.Delete(ns.GetTrigger()) + flag84 = true + ns.FrameTimer(1, BatToVampireKnight2) +} +func BatMove() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + ns.SetCallback(ns.GetTrigger(), 4, ChangeOnSight) + ns.PauseObject(ns.GetTrigger(), 15) +LABEL1: + return +} +func VKDie() { + fvar82 = ns.GetObjectX(ns.GetTrigger()) + fvar83 = ns.GetObjectY(ns.GetTrigger()) + ns.Delete(ns.GetTrigger()) + ns.MoveWaypoint(wp81, fvar82, fvar83) + obj78 = ns.CreateObject("Bat", wp81) + ns.FrameTimer(1, SetRetreatBat) +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/wiz10d/dummy_test.go b/examples/wiz10d/dummy_test.go new file mode 100644 index 0000000..e76e193 --- /dev/null +++ b/examples/wiz10d/dummy_test.go @@ -0,0 +1,6 @@ +package wiz10d + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz10d/wiz10d.go b/examples/wiz10d/wiz10d.go new file mode 100644 index 0000000..65cee2e --- /dev/null +++ b/examples/wiz10d/wiz10d.go @@ -0,0 +1,747 @@ +package wiz10d + +import ( + "github.com/noxworld-dev/noxscript/ns/v3" + "strconv" +) + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + gvar6 ns.WallGroupID + gvar7 ns.ObjectGroupID + gvar8 ns.ObjectGroupID + gvar9 ns.ObjectGroupID + gvar10 ns.WallGroupID + wp11 ns.WaypointID + wp12 ns.WaypointID + wp13 ns.WaypointID + wp14 ns.WaypointID + gvar15 ns.WallGroupID + gvar16 ns.ObjectGroupID + gvar17 ns.ObjectGroupID + gvar18 ns.ObjectGroupID + wp19 ns.WaypointID + wp20 ns.WaypointID + wp21 ns.WaypointID + obj22 ns.ObjectID + wp23 [32]ns.WaypointID + obj24 ns.ObjectID + gvar25 ns.WallGroupID + gvar26 ns.ObjectGroupID + gvar27 ns.ObjectGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + gvar30 ns.ObjectGroupID + obj31 ns.ObjectID + obj32 ns.ObjectID + flag33 bool + flag34 bool + wp35 ns.WaypointID + wp36 ns.WaypointID + wp37 ns.WaypointID + wp38 ns.WaypointID + wp39 ns.WaypointID + wp40 ns.WaypointID + wp41 ns.WaypointID + wp42 ns.WaypointID + wp43 ns.WaypointID + wp44 ns.WaypointID + wp45 ns.WaypointID + wp46 ns.WaypointID + wp47 ns.WaypointID + wp48 ns.WaypointID + wp49 ns.WaypointID + wp50 ns.WaypointID + wp51 ns.WaypointID + wp52 ns.WaypointID + obj53 ns.ObjectID + obj54 ns.ObjectID + obj55 ns.ObjectID + obj56 ns.ObjectID + obj57 ns.ObjectID + obj58 ns.ObjectID + gvar59 int + gvar60 int + gvar61 int + gvar62 int + gvar63 int + gvar64 int + gvar65 int + obj66 ns.ObjectID + wp67 [6]ns.WaypointID + gvar68 ns.WallGroupID + gvar69 int + gvar70 int + gvar71 int + obj72 ns.ObjectID + obj73 ns.ObjectID + obj74 ns.ObjectID + obj75 ns.ObjectID + wp76 ns.WaypointID + wp77 ns.WaypointID + wp78 ns.WaypointID + wp79 ns.WaypointID + gvar80 ns.WallGroupID + gvar81 ns.ObjectGroupID + gvar82 ns.ObjectGroupID + gvar83 ns.WallGroupID + obj84 ns.ObjectID + obj85 ns.ObjectID + obj86 ns.ObjectID + obj87 ns.ObjectID + obj88 ns.ObjectID + obj89 ns.ObjectID + obj90 ns.ObjectID + obj91 ns.ObjectID + obj92 ns.ObjectID + obj93 ns.ObjectID + obj94 ns.ObjectID + obj95 ns.ObjectID + obj96 ns.ObjectID + obj97 ns.ObjectID + obj98 ns.ObjectID + obj99 ns.ObjectID + obj100 ns.ObjectID + obj101 ns.ObjectID + gvar102 ns.ObjectGroupID + gvar103 ns.ObjectGroupID + gvar104 ns.ObjectGroupID + gvar105 ns.ObjectGroupID + gvar106 ns.ObjectGroupID + gvar107 ns.ObjectGroupID + gvar108 ns.WallGroupID + gvar109 ns.WallGroupID + gvar110 ns.WallGroupID + flag111 bool + flag112 bool + flag113 bool + flag114 bool + wp115 ns.WaypointID + gvar116 ns.ObjectGroupID + wp117 ns.WaypointID + wp118 ns.WaypointID +) + +func init() { + gvar59 = 0 + gvar60 = 1 + gvar61 = 2 + gvar62 = 3 + gvar63 = 4 + gvar64 = 5 + gvar65 = gvar59 + gvar69 = 0 + gvar70 = 1 + gvar71 = gvar69 + flag33 = false + flag34 = false + flag111 = false + flag112 = false + flag113 = false + flag114 = false +} +func PlayerDeath() { + ns.DeathScreen(10) +} +func FilterHecubah() int { + if !ns.IsCaller(obj5) { + goto LABEL1 + } + return 1 + goto LABEL2 +LABEL1: + return 0 +LABEL2: + return 0 +} +func ActivateSmokePuffs() { + var v0 int + v0 = 0 + for { + if !(v0 < 32) { + goto LABEL1 + } + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp23[v0]), ns.GetWaypointY(wp23[v0]), 0, 0) + v0 += 2 + } +LABEL1: + return +} +func HecubahGuard() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp13) + v1 = ns.GetWaypointY(wp13) + v2 = ns.GetWaypointX(wp14) + v3 = ns.GetWaypointY(wp14) + ns.CreatureGuard(obj5, v0, v1, v2, v3, 0) + ns.NoWallSound(true) + ns.WallGroupClose(gvar25) + ns.NoWallSound(false) +} +func EnableOrbMonsterGroup() { + ns.ObjectGroupOn(gvar7) + ns.Frozen(ns.GetHost(), false) + ns.WallGroupOpen(gvar6) + ns.FrameTimer(2, ActivateSmokePuffs) + ns.WallGroupClose(gvar10) +} +func HecubahExit() { + ns.Enchant(obj5, ns.ENCHANT_HASTED, 100) + ns.Move(obj5, wp13) + ns.WideScreen(false) + ns.FrameTimer(60, EnableOrbMonsterGroup) +} +func HecubahDialogEnd() { + ns.FrameTimer(30, HecubahExit) + ns.CancelDialog(obj5) +} +func HecubahDialogStart() { + ns.TellStory(ns.DemonRecognize, "Con07H.scr:HecubahTalk02") +} +func HecubahTrigger() { + ns.LookAtObject(obj5, ns.GetHost()) + ns.StoryPic(obj5, "HecubahPic") + ns.SetDialog(obj5, ns.NEXT, HecubahDialogStart, HecubahDialogEnd) + ns.StartDialog(obj5, ns.GetHost()) +} +func HecubahEnter() { + ns.Move(obj5, wp12) +} +func HecubahWallsDown() { + ns.WallGroupOpen(gvar15) + ns.FrameTimer(1, HecubahEnter) +} +func GetOrb() { + ns.ObjectOff(obj4) + ns.ObjectGroupOff(gvar17) + ns.SetHalberd(3) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahEnter) + ns.ObjectGroupOff(gvar16) + ns.JournalEntry(ns.GetHost(), "War11Hecubah", 1) + ns.JournalEdit(ns.GetHost(), "War10aOrbQuest", 4) + ns.FrameTimer(60, HecubahWallsDown) +} +func EnableAllMonsters() { + ns.Frozen(ns.GetHost(), false) + ns.ObjectGroupOn(gvar7) + ns.ObjectGroupOn(gvar8) + ns.ObjectGroupOn(gvar9) +} +func HecubahVanish1() { + ns.ObjectOn(obj22) + ns.ObjectGroupOff(gvar18) + ns.Move(obj5, wp19) + ns.AudioEvent(ns.HecubahTaunt, wp13) + ns.WideScreen(false) + ns.FrameTimer(60, EnableAllMonsters) +} +func HecubahTakesOff() { + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.FrameTimer(60, HecubahVanish1) + ns.ObjectGroupOff(gvar7) + ns.ObjectGroupOff(gvar8) + ns.ObjectGroupOff(gvar9) + ns.NoWallSound(true) + ns.WallGroupOpen(gvar25) + ns.NoWallSound(false) +} +func HecubahVanish2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + ) + v0 = ns.GetWaypointX(wp20) + v1 = ns.GetWaypointY(wp20) + v2 = ns.GetWaypointX(wp19) + v3 = ns.GetWaypointY(wp19) + ns.Effect(ns.SMOKE_BLAST, v2, v3, 0, 0) + ns.AudioEvent(ns.TeleportOut, wp19) + ns.MoveObject(obj5, v0, v1) + ns.ObjectOn(obj24) +} +func MapSwitch() { + var ( + v0 float32 + v1 float32 + ) + v0 = ns.GetWaypointX(wp21) + v1 = ns.GetWaypointY(wp21) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(ns.GetHost(), v0, v1) +} +func TeleportPlayer() { + ns.Frozen(ns.GetHost(), true) + ns.Blind() + ns.FrameTimer(120, MapSwitch) +} +func EnableMonsterGroup2() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.ObjectGroupOn(gvar8) +} +func EnableMonsterGroup3() { + ns.AggressionLevel(ns.GetTrigger(), 0.83) + ns.ObjectGroupOn(gvar9) +} +func DestroyMe() { + ns.Delete(ns.GetCaller()) +} +func LichWallsDown2() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + v10 float32 + v11 float32 + v12 float32 + v13 float32 + v14 float32 + v15 float32 + ) + v0 = ns.GetWaypointX(wp43) + v1 = ns.GetWaypointY(wp43) + v2 = ns.GetWaypointX(wp44) + v3 = ns.GetWaypointY(wp44) + v4 = ns.GetWaypointX(wp45) + v5 = ns.GetWaypointY(wp45) + v6 = ns.GetWaypointX(wp46) + v7 = ns.GetWaypointY(wp46) + v8 = ns.GetWaypointX(wp47) + v9 = ns.GetWaypointY(wp47) + v10 = ns.GetWaypointX(wp48) + v11 = ns.GetWaypointY(wp48) + v12 = ns.GetWaypointX(wp49) + v13 = ns.GetWaypointY(wp49) + v14 = ns.GetWaypointX(wp50) + v15 = ns.GetWaypointY(wp50) + ns.WallGroupOpen(gvar29) + ns.ObjectGroupOn(gvar30) + ns.ObjectGroupOn(gvar27) + ns.FrameTimer(1, LichMove) + ns.Effect(ns.SMOKE_BLAST, v0, v1, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v2, v3, v2, v3) + ns.Effect(ns.SMOKE_BLAST, v4, v5, v4, v5) + ns.Effect(ns.SMOKE_BLAST, v6, v7, v6, v7) + ns.Effect(ns.SMOKE_BLAST, v8, v9, v8, v9) + ns.Effect(ns.SMOKE_BLAST, v10, v11, v10, v11) + ns.Effect(ns.SMOKE_BLAST, v12, v13, v12, v13) + ns.Effect(ns.SMOKE_BLAST, v14, v15, v14, v15) +} +func LichDieCheck() { + if !(flag33 && flag34) { + goto LABEL1 + } + LichWallsDown2() +LABEL1: + return +} +func LichDie1() { + flag33 = true + LichDieCheck() +} +func LichDie2() { + flag34 = true + LichDieCheck() +} +func LichMove() { + ns.Move(obj31, wp51) + ns.Move(obj32, wp52) +} +func LichWallsDown() { + var ( + v0 float32 + v1 float32 + v2 float32 + v3 float32 + v4 float32 + v5 float32 + v6 float32 + v7 float32 + v8 float32 + v9 float32 + v10 float32 + v11 float32 + v12 float32 + v13 float32 + v14 float32 + v15 float32 + ) + v0 = ns.GetWaypointX(wp35) + v1 = ns.GetWaypointY(wp35) + v2 = ns.GetWaypointX(wp36) + v3 = ns.GetWaypointY(wp36) + v4 = ns.GetWaypointX(wp37) + v5 = ns.GetWaypointY(wp37) + v6 = ns.GetWaypointX(wp38) + v7 = ns.GetWaypointY(wp38) + v8 = ns.GetWaypointX(wp39) + v9 = ns.GetWaypointY(wp39) + v10 = ns.GetWaypointX(wp40) + v11 = ns.GetWaypointY(wp40) + v12 = ns.GetWaypointX(wp41) + v13 = ns.GetWaypointY(wp41) + v14 = ns.GetWaypointX(wp42) + v15 = ns.GetWaypointY(wp42) + ns.WallGroupOpen(gvar28) + ns.ObjectGroupOn(gvar26) + ns.Effect(ns.SMOKE_BLAST, v0, v1, v0, v1) + ns.Effect(ns.SMOKE_BLAST, v2, v3, v2, v3) + ns.Effect(ns.SMOKE_BLAST, v4, v5, v4, v5) + ns.Effect(ns.SMOKE_BLAST, v6, v7, v6, v7) + ns.Effect(ns.SMOKE_BLAST, v8, v9, v8, v9) + ns.Effect(ns.SMOKE_BLAST, v10, v11, v10, v11) + ns.Effect(ns.SMOKE_BLAST, v12, v13, v12, v13) + ns.Effect(ns.SMOKE_BLAST, v14, v15, v14, v15) +} +func SentryRun() { + var v0 int + v0 = gvar65 + if v0 == gvar59 { + goto LABEL1 + } + if v0 == gvar60 { + goto LABEL2 + } + if v0 == gvar61 { + goto LABEL3 + } + if v0 == gvar62 { + goto LABEL4 + } + if v0 == gvar63 { + goto LABEL5 + } + if v0 == gvar64 { + goto LABEL6 + } + goto LABEL7 +LABEL1: + ns.ObjectOff(obj53) + ns.ObjectOn(obj54) + ns.ObjectOn(obj55) + ns.ObjectOn(obj56) + ns.ObjectOn(obj57) + ns.ObjectOff(obj58) + ns.FrameTimer(25, SentryRun) + gvar65 = gvar60 + goto LABEL7 +LABEL2: + ns.ObjectOn(obj53) + ns.ObjectOn(obj54) + ns.ObjectOn(obj55) + ns.ObjectOn(obj56) + ns.ObjectOff(obj57) + ns.ObjectOn(obj58) + ns.FrameTimer(25, SentryRun) + gvar65 = gvar61 + goto LABEL7 +LABEL3: + ns.ObjectOn(obj53) + ns.ObjectOn(obj54) + ns.ObjectOn(obj55) + ns.ObjectOff(obj56) + ns.ObjectOn(obj57) + ns.ObjectOn(obj58) + ns.FrameTimer(25, SentryRun) + gvar65 = gvar62 + goto LABEL7 +LABEL4: + ns.ObjectOn(obj53) + ns.ObjectOn(obj54) + ns.ObjectOff(obj55) + ns.ObjectOn(obj56) + ns.ObjectOn(obj57) + ns.ObjectOn(obj58) + ns.FrameTimer(25, SentryRun) + gvar65 = gvar63 + goto LABEL7 +LABEL5: + ns.ObjectOn(obj53) + ns.ObjectOff(obj54) + ns.ObjectOn(obj55) + ns.ObjectOn(obj56) + ns.ObjectOn(obj57) + ns.ObjectOn(obj58) + ns.FrameTimer(25, SentryRun) + gvar65 = gvar64 + goto LABEL7 +LABEL6: + ns.ObjectOn(obj53) + ns.ObjectOn(obj54) + ns.ObjectOn(obj55) + ns.ObjectOn(obj56) + ns.ObjectOn(obj57) + ns.ObjectOn(obj58) + ns.FrameTimer(25, SentryRun) + gvar65 = gvar59 + goto LABEL7 +LABEL7: + return +} +func LLDies() { + gvar71 = gvar70 +} +func OpenLLWallGroup() { + ns.WallGroupOpen(gvar68) +} +func Ghost1Face() { + ns.LookAtObject(obj66, ns.GetHost()) +} +func Ghost2Face() { + ns.LookAtObject(obj66, ns.GetHost()) +} +func PlayAction2Music() { + ns.Music(27, 100) +} +func MapInitialize() { + var v0 int + gvar26 = ns.ObjectGroup("LichGroup") + gvar27 = ns.ObjectGroup("LichGroup2") + gvar28 = ns.WallGroup("LichWallGroup") + gvar29 = ns.WallGroup("LichWallGroup2") + gvar30 = ns.ObjectGroup("LichElevatorGroup") + obj31 = ns.Object("Lich1") + obj32 = ns.Object("Lich2") + wp35 = ns.Waypoint("DestroyWP1") + wp36 = ns.Waypoint("DestroyWP2") + wp37 = ns.Waypoint("DestroyWP3") + wp38 = ns.Waypoint("DestroyWP4") + wp39 = ns.Waypoint("DestroyWP5") + wp40 = ns.Waypoint("DestroyWP6") + wp41 = ns.Waypoint("DestroyWP7") + wp42 = ns.Waypoint("DestroyWP8") + wp43 = ns.Waypoint("DestroyWP1a") + wp44 = ns.Waypoint("DestroyWP2a") + wp45 = ns.Waypoint("DestroyWP3a") + wp46 = ns.Waypoint("DestroyWP4a") + wp47 = ns.Waypoint("DestroyWP5a") + wp48 = ns.Waypoint("DestroyWP6a") + wp49 = ns.Waypoint("DestroyWP7a") + wp50 = ns.Waypoint("DestroyWP8a") + wp51 = ns.Waypoint("LichWP1") + wp52 = ns.Waypoint("LichWP2") + obj53 = ns.Object("Sentry1") + obj54 = ns.Object("Sentry2") + obj55 = ns.Object("Sentry3") + obj56 = ns.Object("Sentry4") + obj57 = ns.Object("Sentry5") + obj58 = ns.Object("Sentry6") + SentryRun() + obj66 = ns.Object("LLGhost") + wp67[0] = ns.Waypoint("LLGhostWP1") + wp67[1] = ns.Waypoint("LLGhostWP2") + wp67[2] = ns.Waypoint("LLGhostWP3") + wp67[3] = ns.Waypoint("LLGhostWP4") + wp67[4] = ns.Waypoint("LLGhostWP5") + wp67[5] = ns.Waypoint("LLGhostWP6") + gvar68 = ns.WallGroup("LLWallGroup") + obj72 = ns.Object("Spike1") + obj73 = ns.Object("Spike2") + obj74 = ns.Object("Spike3") + obj75 = ns.Object("Spike4") + wp76 = ns.Waypoint("Spike1WP") + wp77 = ns.Waypoint("Spike2WP") + wp78 = ns.Waypoint("Spike3WP") + wp79 = ns.Waypoint("Spike4WP") + gvar80 = ns.WallGroup("SpikeWallGroup") + gvar81 = ns.ObjectGroup("SpikeWallTrigGroup") + gvar82 = ns.ObjectGroup("CherubGroup") + gvar83 = ns.WallGroup("CherubWallGroup") + obj84 = ns.Object("Cherub1") + obj85 = ns.Object("Cherub2") + obj86 = ns.Object("Cherub3") + obj87 = ns.Object("Cherub4") + obj88 = ns.Object("Cherub5") + obj89 = ns.Object("Cherub6") + obj90 = ns.Object("Cherub7") + obj91 = ns.Object("Cherub8") + obj92 = ns.Object("Cherub9") + obj93 = ns.Object("Cherub10") + gvar102 = ns.ObjectGroup("SentryGroup1") + gvar103 = ns.ObjectGroup("SentryGroup2") + gvar104 = ns.ObjectGroup("SentryGroup3") + gvar105 = ns.ObjectGroup("SentryGroup4") + obj94 = ns.Object("Sentry1L") + obj95 = ns.Object("Sentry1R") + obj96 = ns.Object("Sentry2L") + obj97 = ns.Object("Sentry2R") + obj98 = ns.Object("Sentry3L") + obj99 = ns.Object("Sentry3R") + obj100 = ns.Object("Sentry4L") + obj101 = ns.Object("Sentry4R") + gvar107 = ns.ObjectGroup("OrbTriggerGroup") + gvar106 = ns.ObjectGroup("SentryMonsterGroup") + gvar108 = ns.WallGroup("OrbWallGroup1") + gvar109 = ns.WallGroup("OrbWallGroup2") + gvar110 = ns.WallGroup("OrbWallGroup3") + gvar10 = ns.WallGroup("OrbWallGroup4") + gvar116 = ns.ObjectGroup("OrbXPTrigGroup") + wp115 = ns.Waypoint("OrbXPWP") + obj4 = ns.Object("OrbPool1") + obj5 = ns.Object("Hecubah") + gvar7 = ns.ObjectGroup("OrbMonsterGroup") + gvar8 = ns.ObjectGroup("OrbMonsterGroup2") + gvar9 = ns.ObjectGroup("OrbMonsterGroup3") + gvar6 = ns.WallGroup("OrbWallGroupFinal") + wp11 = ns.Waypoint("OrbAudioWP") + gvar15 = ns.WallGroup("HecubahWallGroup") + wp12 = ns.Waypoint("HecubahEnterWP") + wp13 = ns.Waypoint("HecubahExitWP") + wp14 = ns.Waypoint("HecubahLookWP") + gvar16 = ns.ObjectGroup("OrbSoundGroup") + gvar17 = ns.ObjectGroup("OrbPoolTrigGroup") + gvar18 = ns.ObjectGroup("HecubahVanishTrigGroup") + wp19 = ns.Waypoint("HecubahVanishWP") + wp20 = ns.Waypoint("HecubahEndWP") + wp21 = ns.Waypoint("MapSwitchWP") + obj22 = ns.Object("HecubahEndTrig") + obj24 = ns.Object("ExitTeleporter") + wp117 = ns.Waypoint("Secret1AudioWP") + wp118 = ns.Waypoint("Secret2AudioWP") + gvar25 = ns.WallGroup("InvisibleWallGroup") + ns.WallGroupOpen(gvar25) + PlayAction2Music() + v0 = 0 + for { + if !(v0 < 32) { + goto LABEL1 + } + wp23[v0] = ns.Waypoint("SmokeWP" + strconv.Itoa(v0+1)) + v0 += 1 + } +LABEL1: + return +} +func OrbXP() { + ns.ObjectGroupOff(gvar116) + ns.AudioEvent(ns.FlagDrop, wp115) + ns.GiveXp(ns.GetHost(), 2000) +} +func Secret100XP() { + ns.GiveXp(ns.GetHost(), 100) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.JournalEntryAdd, wp117) +} +func Secret200XP() { + ns.GiveXp(ns.GetHost(), 200) + ns.PrintToAll("GeneralPrint:SecretFound") + ns.AudioEvent(ns.JournalEntryAdd, wp118) +} +func PlayOrbMusic() { + ns.Music(12, 100) +} +func PlayAction3Music() { + ns.Music(28, 100) +} +func SpikeMove() { + ns.ObjectGroupOff(gvar81) + ns.AudioEvent(ns.SpikeBlockMove, wp79) + ns.WallGroupOpen(gvar80) + ns.Move(obj72, wp76) + ns.Move(obj73, wp77) + ns.Move(obj74, wp78) + ns.Move(obj75, wp79) + PlayAction3Music() +} +func OpenOrbWallGroup1() { + if !(!ns.IsObjectOn(obj94) && !ns.IsObjectOn(obj95) && !ns.IsObjectOn(obj96) && !ns.IsObjectOn(obj97) && !ns.IsObjectOn(obj98) && !ns.IsObjectOn(obj99) && !ns.IsObjectOn(obj100) && !ns.IsObjectOn(obj101)) { + goto LABEL1 + } + ns.WallGroupOpen(gvar108) +LABEL1: + return +} +func ToggleSG1() { + ns.ObjectGroupToggle(gvar102) + OpenOrbWallGroup1() +} +func EnableSG1() { + ns.ObjectGroupOn(gvar102) +} +func ToggleSG2() { + ns.ObjectGroupToggle(gvar103) + OpenOrbWallGroup1() +} +func EnableSG2() { + ns.ObjectGroupOn(gvar103) +} +func ToggleSG3() { + ns.ObjectGroupToggle(gvar104) + OpenOrbWallGroup1() +} +func EnableSG3() { + ns.ObjectGroupOn(gvar104) +} +func ToggleSG4() { + ns.ObjectGroupToggle(gvar105) + OpenOrbWallGroup1() +} +func EnableSG4() { + ns.ObjectGroupOn(gvar105) +} +func OpenOrbWallGroup2() { + ns.WallGroupOpen(gvar109) + ns.ObjectGroupOn(gvar106) + ns.ObjectGroupOn(gvar82) + ns.WallGroupOpen(gvar83) +} +func OpenOrbWallGroup3() { + ns.WallGroupOpen(gvar110) +} +func OpenOrbWallGroup4() { + ns.WallGroupOpen(gvar10) + ns.ObjectGroupOff(gvar107) + ns.ObjectGroupOff(gvar102) + ns.ObjectGroupOff(gvar103) + ns.ObjectGroupOff(gvar104) + ns.ObjectGroupOff(gvar105) +} +func BossDieCheck() { + if !(flag111 && flag112 && flag113 && flag114) { + goto LABEL1 + } + OpenOrbWallGroup3() +LABEL1: + return +} +func BossDie1() { + flag111 = true + BossDieCheck() +} +func BossDie2() { + flag112 = true + BossDieCheck() +} +func BossDie3() { + flag113 = true + BossDieCheck() +} +func BossDie4() { + flag114 = true + BossDieCheck() +} +func OnEvent(typ string) { + switch typ { + case "PlayerDeath": + PlayerDeath() + case "MapInitialize": + MapInitialize() + } +} diff --git a/examples/wiz11a/dummy_test.go b/examples/wiz11a/dummy_test.go new file mode 100644 index 0000000..028debd --- /dev/null +++ b/examples/wiz11a/dummy_test.go @@ -0,0 +1,6 @@ +package wiz11a + +import "testing" + +func TestBuild(t *testing.T) { +} diff --git a/examples/wiz11a/wiz11a.go b/examples/wiz11a/wiz11a.go new file mode 100644 index 0000000..a417e2e --- /dev/null +++ b/examples/wiz11a/wiz11a.go @@ -0,0 +1,734 @@ +package wiz11a + +import ( + "strconv" + + "github.com/noxworld-dev/noxscript/ns/v3" +) + +var ( + obj4 ns.ObjectID + obj5 ns.ObjectID + obj6 ns.ObjectID + obj7 ns.ObjectID + obj8 ns.ObjectID + obj9 ns.ObjectID + gvar10 ns.WaypointGroupID + gvar11 ns.WaypointGroupID + wp12 ns.WaypointID + gvar13 int + flag14 bool + flag15 bool + gvar16 int + obj17 ns.ObjectID + obj18 ns.ObjectID + gvar19 ns.WallGroupID + gvar20 ns.WallGroupID + gvar21 ns.WallGroupID + wp22 ns.WaypointID + gvar23 ns.WaypointGroupID + gvar24 ns.WaypointGroupID + obj25 ns.ObjectID + obj26 ns.ObjectID + gvar27 ns.WallGroupID + gvar28 ns.WallGroupID + gvar29 ns.WallGroupID + wp30 ns.WaypointID + wp31 ns.WaypointID + wp32 ns.WaypointID + wp33 ns.WaypointID + wp34 ns.WaypointID + gvar35 ns.WaypointGroupID + gvar36 ns.WaypointGroupID + gvar37 ns.WaypointGroupID + flag38 bool + wp39 ns.WaypointID + obj40 ns.ObjectID + fvar41 float32 + fvar42 float32 + flag43 bool + flag44 bool + flag45 bool + flag46 bool +) + +func init() { + flag15 = false + gvar16 = 0 + flag14 = false + flag43 = false + flag38 = false + flag44 = false + flag45 = false + flag46 = false +} +func StartTTRoom() { + ns.JournalEntry(ns.GetHost(), "War11Hecubah", 2) + ns.PrintToAll("Con01a:NewJournalEntry") + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Frozen(obj7, true) + ns.Frozen(obj8, true) + ns.Frozen(obj9, true) + ns.CreatureIdle(obj4) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj4) + ns.LookAtObject(obj4, ns.GetHost()) + ns.FrameTimer(1, HecTTTalk) +} +func HecTTTalk() { + ns.SetDialog(obj4, ns.NORMAL, HecTTStart, HecTTEnd) + ns.StartDialog(obj4, ns.GetHost()) +} +func HecTTStart() { + ns.TellStory(ns.HumanMaleEatFood, "War11a:CatchMe") +} +func HecTTEnd() { + ns.CancelDialog(obj4) + ns.Frozen(obj4, false) + ns.Walk(obj4, 1321, 4793) + ns.Music(27, 100) +} +func EnterBlinkRoom() { + if !ns.IsCaller(obj4) { + goto LABEL1 + } + ns.MoveObject(obj4, 1052, 3866) + ns.Frozen(obj4, true) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WideScreen(true) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(obj4) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj4) + ns.LookAtObject(obj4, ns.GetHost()) + ns.FrameTimer(15, HecBlinkTalk) +LABEL2: + return +} +func HecBlinkTalk() { + ns.SetDialog(obj4, ns.NORMAL, HecBlinkStart, HecBlinkEnd) + ns.StartDialog(obj4, ns.GetHost()) +} +func HecBlinkStart() { + ns.TellStory(ns.HumanMaleEatFood, "Con10b.scr:HecubahDialog1") +} +func HecBlinkEnd() { + ns.CancelDialog(obj4) + ns.Frozen(obj4, false) + ns.Walk(obj4, 1140, 3785) +} +func EnterArena() { + if !ns.IsCaller(obj4) { + goto LABEL1 + } + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(obj4, 4378, 1925) + ns.CreatureGuard(obj4, 4378, 1925, 0, 0, 0) +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WayPointGroupOff(gvar10) + ns.WayPointGroupOn(gvar11) +LABEL2: + return +} +func TempInit() { + ns.SetDialog(obj4, ns.NORMAL, HecTTStart, HecTTEnd) +} +func Hunting() { + if !(ns.CurrentHealth(ns.GetTrigger()) > 0) { + goto LABEL1 + } + ns.CreatureHunt(ns.GetTrigger()) +LABEL1: + return +} +func Lich1Die() { +} +func Lich2Die() { +} +func Lich3Die() { +} +func Lich4Die() { +} +func Lich1Setup() { + ns.SetCallback(obj5, 13, Hunting) + ns.SetCallback(obj5, 5, Lich1Die) + ns.SetCallback(obj5, 4, Hunting) + ns.CreatureHunt(obj5) + ns.SetOwner(obj4, obj5) +} +func Lich2Setup() { + ns.SetCallback(obj6, 13, Hunting) + ns.SetCallback(obj6, 5, Lich2Die) + ns.SetCallback(obj6, 4, Hunting) + ns.CreatureHunt(obj6) + ns.SetOwner(obj4, obj6) +} +func Lich3Setup() { + ns.SetCallback(obj7, 13, Hunting) + ns.SetCallback(obj7, 5, Lich3Die) + ns.SetCallback(obj7, 4, Hunting) + ns.CreatureHunt(obj7) + ns.SetOwner(obj4, obj7) +} +func Lich4Setup() { + ns.SetCallback(obj8, 13, Hunting) + ns.SetCallback(obj8, 5, Lich4Die) + ns.SetCallback(obj8, 4, Hunting) + ns.CreatureHunt(obj8) + ns.SetOwner(obj4, obj8) +} +func HecLoseSight() { + ns.CreatureHunt(ns.GetTrigger()) +} +func OpenBlinkWalls1() { + ns.WallGroupOpen(gvar28) +} +func CloseBlinkWalls1() { + ns.WallGroupClose(gvar28) +} +func OpenBlinkWalls2() { + ns.WallGroupOpen(gvar29) +} +func CloseBlinkWalls2() { + ns.WallGroupClose(gvar29) +} +func OpeningSetPiece() { + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Frozen(obj7, true) + ns.Frozen(obj8, true) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.LookAtObject(ns.GetHost(), obj4) +} +func Hecubah1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk01") +} +func Hecubah1End() { + ns.CancelDialog(obj4) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj4, false) + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.Frozen(obj7, false) + ns.Frozen(obj8, false) + ns.AggressionLevel(obj4, 0.83) + ns.SetCallback(obj4, 13, HecLoseSight) + ns.SetCallback(obj4, 4, Hunting) +} +func SetPieceInit() { + wp39 = ns.Waypoint("HecubahWP") + obj40 = ns.Object("HecubahLight") +} +func OpenBlinkWallsA() { + ns.WallGroupOpen(gvar20) +} +func OpenBlinkWallsB() { + ns.WallGroupOpen(gvar21) +} +func MapInitialize() { + flag38 = true + obj25 = ns.Object("NewTeleporter") + obj26 = ns.Object("TeleportLight") + gvar27 = ns.WallGroup("TeleportWalls") + gvar28 = ns.WallGroup("BlinkWalls1") + gvar29 = ns.WallGroup("BlinkWalls2") + gvar20 = ns.WallGroup("BlinkWallsA") + gvar21 = ns.WallGroup("BlinkWallsB") + wp30 = ns.Waypoint("OpenDoorWP") + wp31 = ns.Waypoint("TeleportNewWP") + wp32 = ns.Waypoint("SetPieceStartWP") + wp33 = ns.Waypoint("BattleStartWP") + wp34 = ns.Waypoint("LeaveWP") + gvar35 = ns.WaypointGroup("EscapeWP") + gvar36 = ns.WaypointGroup("BlinkBookWP") + gvar10 = ns.WaypointGroup("BlinkWP") + gvar37 = ns.WaypointGroup("Arena2WP") + gvar11 = ns.WaypointGroup("CheeseWP") + obj4 = ns.Object("Hecubah") + obj5 = ns.Object("Lich1") + obj6 = ns.Object("Lich2") + obj7 = ns.Object("Lich3") + obj8 = ns.Object("Lich4") + obj9 = ns.Object("Lich5") + obj17 = ns.Object("FinalTeleporter") + obj18 = ns.Object("TPINTrigger") + gvar19 = ns.WallGroup("FinaleWalls") + wp12 = ns.Waypoint("TeleportWP") + wp22 = ns.Waypoint("PlayerSounds") + gvar23 = ns.WaypointGroup("ArenaWP") + gvar24 = ns.WaypointGroup("FacadeWP") + ns.WayPointGroupOff(gvar24) + ns.WayPointGroupOff(gvar23) + ns.WayPointGroupOff(gvar37) + ns.WayPointGroupOff(gvar36) + ns.WayPointGroupOff(gvar11) + ns.WayPointGroupOff(gvar35) + ns.StoryPic(obj4, "HecubahPic") + ns.SetDialog(obj4, ns.NORMAL, Hecubah1Start, Hecubah1End) + SetPieceInit() + ns.StartupScreen(11) + ns.FrameTimer(10, StartTTRoom) +} +func PlayerDeath() { + ns.DeathScreen(11) +} +func HecubahDies() { + fvar41 = ns.GetObjectX(obj4) + fvar42 = ns.GetObjectY(obj4) + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.Music(0, 100) + ns.AudioEvent(ns.HecubahDieFrame0A, wp22) + ns.FrameTimer(66, HecubahDie1) + ns.FrameTimer(130, HecubahDie2) + ns.FrameTimer(170, HecubahDie3) + ns.FrameTimer(280, HecubahDie4) +} +func HecubahDie1() { + ns.AudioEvent(ns.HecubahDieFrame98, wp22) +} +func HecubahDie2() { + ns.AudioEvent(ns.HecubahDieFrame194, wp22) +} +func HecubahDie3() { + ns.AudioEvent(ns.HecubahDieFrame283, wp22) +} +func HecubahDie4() { + ns.AudioEvent(ns.HecubahDieFrame439, wp22) + ns.MoveObject(obj40, fvar41, fvar42) +} +func OpenDoors() { + if !ns.IsCaller(obj4) { + goto LABEL1 + } + if !flag43 { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.WallGroupOpen(gvar27) + ns.Move(obj4, wp31) + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.BoulderMove, wp22) + CheckPlayerZone() +LABEL1: + return +} +func StartTeleporter() { + if !ns.IsCaller(obj4) { + goto LABEL1 + } + if flag38 { + goto LABEL2 + } + ns.ObjectOff(ns.GetTrigger()) + ns.MoveObject(obj26, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31)) + ns.ObjectOn(obj25) + goto LABEL3 +LABEL2: + ns.ObjectOff(ns.GetTrigger()) + ns.ObjectOn(obj25) + ns.MoveObject(obj26, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31)) + ns.CreatureGuard(obj4, ns.GetWaypointX(wp31), ns.GetWaypointY(wp31), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost()), 0) +LABEL3: + ns.ObjectOn(obj5) + ns.ObjectOn(obj6) + ns.ObjectOn(obj7) + ns.ObjectOn(obj8) + ns.ObjectOn(obj9) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) +LABEL1: + return +} +func StartIntro() { + ns.Frozen(obj4, true) + ns.CreatureIdle(obj4) + ns.LookAtObject(obj4, ns.GetHost()) + ns.StartDialog(obj4, ns.GetHost()) +} +func HecubahCroak() { + ns.ImmediateBlind() + ns.Frozen(obj4, true) + ns.Frozen(ns.GetHost(), true) + ns.FrameTimer(20, EndPlaces) +} +func FreezePlayer() { + ns.Frozen(ns.GetHost(), true) + ns.Frozen(obj4, true) + ns.LookAtObject(ns.GetHost(), obj4) + ns.FrameTimer(40, DeathPieceFadeIn) +} +func SetNPCPositions() { + ns.MoveObject(ns.GetHost(), 4142, 4364) + ns.MoveObject(ns.GetHost(), 4249, 4342) + ns.FrameTimer(10, FreezePlayer) +} +func DeathPieceFadeIn() { + ns.UnBlind() + ns.FrameTimer(60, HecubahDeathTalk) +} +func HecubahDeath1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk07") +} +func HecubahDeath1End() { + ns.CancelDialog(obj4) + ns.Frozen(obj4, false) + ns.WideScreen(false) + HecubahDies() + ns.SecondTimer(13, FinalFadeOut) +} +func HecubahDeathTalk() { + ns.SetDialog(obj4, ns.NORMAL, HecubahDeath1Start, HecubahDeath1End) + ns.StartDialog(obj4, ns.GetHost()) +} +func FinalFadeOut() { + ns.Blind() + ns.EndGame(1) +} +func HecubahRun() { + if !(ns.CurrentHealth(obj4) <= 150) { + goto LABEL1 + } + if !(flag43 == false && flag38 == false) { + goto LABEL2 + } + flag43 = true + ns.Enchant(obj4, ns.ENCHANT_INVULNERABLE, 0) + ns.AggressionLevel(obj4, 0) + ns.Move(obj4, wp30) +LABEL2: + if !(flag43 == false && flag38 == true) { + goto LABEL1 + } + flag43 = true + ns.AggressionLevel(obj4, 0) + ns.Enchant(obj4, ns.ENCHANT_INVULNERABLE, 0) + if !ns.HasEnchant(obj4, ns.ENCHANT_INVISIBLE) { + goto LABEL3 + } + ns.EnchantOff(obj4, ns.ENCHANT_INVISIBLE) +LABEL3: + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.TeleportOut, wp22) + ns.Effect(ns.SMOKE_BLAST, ns.GetObjectX(obj4), ns.GetObjectY(obj4), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetObjectX(obj4), ns.GetObjectY(obj4), 0, 0) + ns.MoveObject(obj4, ns.GetWaypointX(wp34), ns.GetWaypointY(wp34)) + ns.Frozen(obj4, true) + ns.CreatureIdle(obj4) + ns.LookAtObject(obj4, ns.ObjectID(wp32)) // FIXME + CheckPlayerZone() +LABEL1: + return +} +func SetEveryone() { + ns.UnBlind() + ns.FrameTimer(1, FreezeEveryone) +} +func FreezeEveryone() { + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.Frozen(obj4, true) + ns.Frozen(obj5, true) + ns.Frozen(obj6, true) + ns.Frozen(obj7, true) + ns.Frozen(obj8, true) + ns.LookAtObject(obj4, ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj4) + ns.SetDialog(obj4, ns.NEXT, HecubahTeleport1Start, HecubahTeleport1End) + ns.StartDialog(obj4, ns.GetHost()) +} +func HecDeathRayMiss() { + ns.CastSpellLocationLocation(ns.SPELL_DEATH_RAY, ns.GetObjectX(obj4), ns.GetObjectY(obj4), ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())-50) + ns.SetDialog(obj4, ns.NEXT, HecFacade1Start, HecFacade1End) + ns.FrameTimer(10, StartFacadeSetPiece) +} +func HecubahTeleport1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk05") +} +func HecubahTeleport1End() { + ns.SetDialog(obj4, ns.NORMAL, HecubahTeleport2Start, HecubahTeleport2End) + ns.StartDialog(obj4, ns.GetHost()) +} +func HecubahTeleport2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk06") +} +func HecubahTeleport2End() { + ns.ObjectOn(obj17) + ns.Frozen(obj4, false) + ns.Frozen(ns.GetHost(), false) + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.Frozen(obj7, false) + ns.Frozen(obj8, false) +} +func SetHecubahPosition() { + var ( + v0 int + v1 int + ) + if !ns.IsCaller(obj4) { + goto LABEL1 + } + flag14 = true + ns.WayPointGroupOff(gvar35) + v0 = ns.CurrentHealth(obj4) + v1 = v0 - 300 + ns.Damage(obj4, 0, v1, 0) + ns.MoveObject(obj4, 1462, 1322) +LABEL1: + if !ns.IsCaller(ns.GetHost()) { + goto LABEL2 + } + ns.WayPointGroupOff(gvar23) + ns.Frozen(ns.GetHost(), true) + ns.LookAtObject(ns.GetHost(), obj4) + ns.LookAtObject(obj4, ns.GetHost()) + ns.ObjectOff(obj18) + ns.FrameTimer(10, HecDeathRayMiss) +LABEL2: + return +} +func FreezeFacadeHecubah() { + if !ns.IsCaller(obj4) { + goto LABEL1 + } + ns.ObjectOff(ns.GetTrigger()) + ns.Frozen(obj4, true) + ns.CreatureIdle(obj4) +LABEL1: + return +} +func StartFacadeSetPiece() { + ns.StartDialog(obj4, ns.GetHost()) +} +func HecFacade1Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk02") +} +func HecFacade1End() { + ns.SetDialog(obj4, ns.NORMAL, HecFacade2Start, HecFacade2End) + ns.StartDialog(obj4, ns.GetHost()) +} +func HecFacade2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk03") +} +func HecFacade2End() { + ns.CancelDialog(obj4) + ns.WayPointGroupOn(gvar24) + ns.WayPointGroupOff(gvar37) + ns.WayPointGroupOff(gvar36) + ns.AggressionLevel(obj4, 0.83) + ns.Frozen(obj4, false) + ns.Frozen(ns.GetHost(), false) +} +func AlternateStep1() { + ns.MoveObject(ns.GetHost(), 4841, 1183) + ns.Frozen(ns.GetHost(), true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), ns.ObjectID(wp34)) // FIXME + ns.MoveObject(obj4, ns.GetWaypointX(wp30), ns.GetWaypointY(wp30)) + ns.Frozen(obj4, true) + ns.CreatureIdle(obj4) + ns.LookAtObject(obj4, ns.GetHost()) + ns.UnBlind() + ns.FrameTimer(30, AlternateStep2) +} +func AlternateStep2() { + ns.WideScreen(true) + ns.SetDialog(obj4, ns.NEXT, AltStart, AltEnd) + ns.StartDialog(obj4, ns.GetHost()) +} +func AltStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk05") +} +func AltEnd() { + ns.SetDialog(obj4, ns.NORMAL, Alt2Start, Alt2End) + ns.StartDialog(obj4, ns.GetHost()) +} +func Alt2Start() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk06") +} +func Alt2End() { + flag43 = true + ns.AggressionLevel(obj4, 0) + ns.Frozen(obj4, false) + ns.ObjectOn(obj25) + ns.Walk(obj4, ns.GetWaypointX(wp30), ns.GetWaypointY(wp30)) +} +func EnterZone() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag44 = true +LABEL1: + return +} +func ExitZone() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + flag44 = false +LABEL1: + return +} +func EndPlaces() { + ns.Frozen(obj4, false) + ns.Frozen(ns.GetHost(), false) + ns.MoveObject(obj4, 1462, 1322) + ns.MoveObject(ns.GetHost(), 1550, 1430) + ns.FrameTimer(1, EndFreeze) +} +func EndFreeze() { + ns.Frozen(obj4, true) + ns.Frozen(ns.GetHost(), true) + ns.LookAtObject(obj4, ns.GetHost()) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj4) + ns.UnBlind() + ns.WideScreen(true) + ns.FrameTimer(30, HecubahDeathTalk) +} +func CheckPlayerZone() { + if !(flag43 == true && flag44 == true) { + goto LABEL1 + } + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), obj4) + if !(ns.CurrentHealth(obj5) > 0) { + goto LABEL2 + } + ns.ObjectOff(obj5) +LABEL2: + if !(ns.CurrentHealth(obj6) > 0) { + goto LABEL3 + } + ns.ObjectOff(obj6) +LABEL3: + if !(ns.CurrentHealth(obj7) > 0) { + goto LABEL4 + } + ns.ObjectOff(obj7) +LABEL4: + if !(ns.CurrentHealth(obj8) > 0) { + goto LABEL5 + } + ns.ObjectOff(obj8) +LABEL5: + if !(ns.CurrentHealth(obj9) > 0) { + goto LABEL6 + } + ns.ObjectOff(obj9) +LABEL6: + ns.WayPointGroupOn(gvar35) + ns.Frozen(obj4, false) + ns.Move(obj4, wp30) + goto LABEL7 +LABEL1: + ns.FrameTimer(1, CheckPlayerZone) +LABEL7: + return +} +func StartOpeningPiece() { + flag46 = true + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), ns.ObjectID(wp32)) // FIXME + ns.MoveWaypoint(wp22, ns.GetObjectX(ns.GetHost()), ns.GetObjectY(ns.GetHost())) + ns.AudioEvent(ns.TeleportIn, wp22) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32), 0, 0) + ns.MoveObject(obj4, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32)) + ns.Frozen(obj4, true) + ns.CreatureIdle(obj4) + ns.LookAtObject(obj4, ns.GetHost()) + ns.SetDialog(obj4, ns.NORMAL, HecubahOpenStart, HecubahOpenEnd) + ns.StartDialog(obj4, ns.GetHost()) +} +func HecubahOpenStart() { + ns.TellStory(ns.HumanMaleEatFood, "Wiz11A.scr:HecubahTalk01") +} +func HecubahOpenEnd() { + ns.CancelDialog(obj4) + ns.Frozen(obj4, false) + ns.AudioEvent(ns.TeleportOut, wp22) + ns.Effect(ns.SMOKE_BLAST, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32), 0, 0) + ns.Effect(ns.SPARK_EXPLOSION, ns.GetWaypointX(wp32), ns.GetWaypointY(wp32), 0, 0) + ns.MoveObject(obj4, ns.GetWaypointX(wp33), ns.GetWaypointY(wp33)) + ns.FrameTimer(15, ReleasePlayer) +} +func ReleasePlayer() { + ns.Frozen(obj5, false) + ns.Frozen(obj6, false) + ns.Frozen(obj7, false) + ns.Frozen(obj8, false) + ns.Frozen(obj9, false) + ns.AggressionLevel(obj4, 0.83) + ns.AggressionLevel(obj5, 0.83) + ns.AggressionLevel(obj6, 0.83) + ns.AggressionLevel(obj7, 0.83) + ns.AggressionLevel(obj8, 0.83) + ns.AggressionLevel(obj9, 0.83) + ns.CreatureHunt(obj4) + ns.CreatureHunt(obj5) + ns.CreatureHunt(obj6) + ns.CreatureHunt(obj7) + ns.CreatureHunt(obj8) + ns.CreatureHunt(obj9) + ns.WideScreen(false) + ns.Frozen(ns.GetHost(), false) + ns.Music(16, 100) +} +func StartHecTalk() { + if !ns.IsCaller(ns.GetHost()) { + goto LABEL1 + } + if flag46 { + goto LABEL1 + } + ns.Music(11, 100) + flag46 = true + ns.WayPointGroupOn(gvar37) + ns.WayPointGroupOn(gvar36) + ns.Frozen(ns.GetHost(), true) + ns.WideScreen(true) + ns.CreatureIdle(ns.GetHost()) + ns.LookAtObject(ns.GetHost(), ns.ObjectID(wp32)) // FIXME + ns.SecondTimer(1, StartOpeningPiece) +LABEL1: + return +} +func CheckHecHealth() { + ns.PrintToAll(strconv.Itoa(ns.CurrentHealth(obj4))) + if !(ns.CurrentHealth(obj4) > 0) { + goto LABEL1 + } + ns.FrameTimer(5, CheckHecHealth) +LABEL1: + return +} +func OnEvent(typ string) { + switch typ { + case "MapInitialize": + MapInitialize() + case "PlayerDeath": + PlayerDeath() + } +}